Hibernate Session

时间:2011-07-06 14:05:36

标签: hibernate jpa seam

我使用Seam + EJB + JPA + Hibernate和JbossAS6作为我的应用服务器。 我必须将JPA代码转换为hibernate,在部署时我会收到以下错误。

2011-07-06 01:49:15,122 ERROR [org.jboss.kernel.plugins.dependency.AbstractKernelController](HDScanner)安装到PostClassLoader时出错:name = vfs:/// opt / jboss6 / server / default / deploy / SMS-ear.ear state = ClassLoader mode = Manual requiredState = PostClassLoader:org.jboss.deployers.spi.DeploymentException:加载单元vfs的拦截器类时出现异常:/// opt / jboss6 / server / default / deploy / SMS -ear.ear / SMS-ejb.jar /

这是我在原始工作代码中更改的内容: 原始代码:

   Query userQuery = em.createSQLQuery("select u.username from User u where u.username=#{user.username}");
   List existing = userQuery.getResultList();
    List existing = userQuery.getResultList();

修改后的代码:

     org.jboss.ejb3.entity.HibernateSession hs = (HibernateSession)entityManager;
     org.hibernate.Session em = hs.getHibernateSession();
    log.info("Hibernate session"+em);

     List existing = em.createSQLQuery("select u.username from User u where u.username=#{user.username}").list();

我想在我的应用程序中获取hibernate Session 我对JPA很新。我遇到了这个问题。 这是获得会话的正确方法吗?

此致 JAMSHED

1 个答案:

答案 0 :(得分:2)

似乎接缝允许这种查询语法(这很奇怪)。您的例外似乎与此更改无关。

  • 还原更改并确保它再次开始工作
  • 清洁环境
  • 重新开始

原始答案:

WHERE u.username=:username

然后query.setParameter("username", user.getUsername())