我使用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
答案 0 :(得分:2)
似乎接缝允许这种查询语法(这很奇怪)。您的例外似乎与此更改无关。
原始答案:
WHERE u.username=:username
然后query.setParameter("username", user.getUsername())