我无法让我的实体bean正确连接到MySQL。这是我的设置:
JBOSS:6
UBUNTU:11.04
EJB:3.1
我目前正在尝试通过对我的EAR文件根目录中的JARed会话bean的JNDI远程调用来访问实体bean。
我的实体bean正确映射到我的数据库并在一个EAR文件中工作但是我想在同一个容器中的另一个EAR文件中使用相同的实体bean,所以我将JARed我的实体bean并将它们拉入我的第二个EAR文件使用我的构建脚本。我正在提取与我的第一个EAR文件完全相同的persistance.xml文件,它指向我的部署目录根目录中的相同数据源XML。我可以定义我的持久化上下文并访问我的实体bean而没有错误,我可以编译和部署我的JBoss服务器,没有任何例外。但是,当我在部署容器后尝试访问实体bean时,我收到此错误:
java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: User is not mapped [SELECT u FROM User u WHERE u.accountId=:accountId]
这是我正在使用的查询:
List<User> users = entityManager.createQuery("SELECT u FROM User u WHERE u.accountId=:accountId")
.setParameter("accountId", accountId)
.getResultList();
有人可以告诉我:
- JARing实体bean存在问题
- RESTeasy是否需要一些特殊的配置来处理实体bean
- 甚至可以使用JARed实体bean
如果我使用同一容器中相同实体bean的两个独立实例访问相同的数据源,- 可能会出现配置冲突
醇>
提前感谢您对此的任何帮助。我真的被卡住了。
所以我现在已将我的实体和会话bean整合到一个jar中,并更改了persistence.xml,因此请包含Nayan建议的自动检测属性:
<property name="hibernate.archive.autodetection" value="class"/>
但无济于事。我在我的application.xml中注册了JAR,并在构建脚本中将JAR添加到了类路径中。
将JAR文件放入deploy目录的根目录并尝试从那里访问它是否有意义?
答案 0 :(得分:0)
在你的EAR中,似乎无法识别jar中打包的实体,还要检查jar路径中是否存在jar。
尝试在persistence.xml中添加<property name="hibernate.archive.autodetection" value="class"/>
。
否则,尝试包括持久单元的类。
<persistence-unit name="unitName">
<class>com.package.User</class>
...
</persistence-unit>
答案 1 :(得分:0)
问题在于我的persistence.xml文件的位置。我在JAR中有persistence.xml文件,我的会话bean不是我需要的实体bean。问题解决了!