Hibernate 休眠会话

Hibernate 休眠会话,hibernate,jpa,seam,Hibernate,Jpa,Seam,我使用Seam+EJB+JPA+Hibernate和JbossAS6作为我的应用服务器。 我必须将JPA代码转换为hibernate,在部署时我得到以下错误 2011-07-06 01:49:15122错误[org.jboss.kernel.plugins.dependency.AbstractKernelController](HDScanner)安装到PostClassLoader时出错:name=vfs:///opt/jboss6/server/default/deploy/SMS-ear

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

2011-07-06 01:49:15122错误[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会话 我对JPA很陌生。我被这个问题困住了。 这是获得治疗的正确方法吗

问候
Jamshed

似乎seam允许这种查询语法(这很奇怪)。您的异常似乎与更改无关

  • 恢复更改并确保它重新开始工作
  • 清洁环境
  • 重新启动

原始答复:

其中u.username=:username


然后
query.setParameter(“username”,user.getUsername())

+1表示@Bozho;我建议使用
em.createQuery(..)
,因为您似乎在使用对象模型。@jamshed katta在这里使用的是seam管理的持久性,语法是正确的。在部署时执行查询的可能性很小,因此报告的部署错误似乎与代码中的此类更改无关。那么seam会干扰查询语言吗?听起来很奇怪。。更新了答案