Netbeans,JPA Entity Beans在不同的项目中。未知的实体bean类

时间:2013-11-10 18:02:01

标签: java jpa netbeans eclipselink jax-rs

我在Netbeans工作,并将我的实体bean和Web服务放在不同的项目中。我在Web服务项目中包含了实体bean,但是ApplicaitonConfig.java文件不断重写并删除了我在相关jar文件中为实体bean创建的条目。

我的问题是:是否需要让EntityBeans和WebServices共享相同的项目/ jar文件?如果不是包含jar文件中的实体bean的适当方法是什么?


<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1"
             xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="jdbc/emrPool" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>jdbc/emrPool</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="eclipselink.ddl-generation" value="none"/>
      <property name="eclipselink.cache.shared.default" value="false"/>
    </properties>
  </persistence-unit>
</persistence>

根据Melc的输入,我验证了事务类型设置为JTA,jta-data-source设置为Glassfish JDBC资源的值。不幸的是问题仍然存在。我打开了WAR文件并验证了EntityBean.jar文件是最新版本,并且位于War文件的WEB-INF / lib目录中。我认为这与实体未与实体经理“注册”的事实有关。但是我不知道他们为什么没有注册。

2 个答案:

答案 0 :(得分:2)

不,没有必要在同一场战争中。您可以使用jpa实体创建一个项目(我认为它称为类库项目),并从包含Web服务的Web项目库中添加该项目。 ApplicationConfig与Web服务相关,它不会影响实体。我建议你从一个简单的web项目servlet中检查jpa项目的功能。如果它工作,那么它也将使用您的jax-rs代码。 但是请注意正确修改persistence.xml以不使用resource-local,这是非web项目的netbeans的默认生成,但是jta以及正确的服务器数据源。

修改

通过编辑netbeans中的persistence.xml进行另一项测试,并取消选中“Include All Entity Classes in”,然后选择“Add Class ...”选项并选择所有实体类。沿着实体类,您还应该找到您尝试访问的实体类。

当从netbeans运行时,gf正在处理的是web项目的构建文件夹的内容而不是战争。除非你去gf的管理控制台,否则部署应用程序并选择你的war文件。因此,您最好还是检查该文件夹的内容,或者只是删除它,让nb重新创建它。

“未知实体bean类”经常会出现netbeans和glassfish,例如,系统在重新部署后工作时也可以获取它。在这种情况下,它通过重新启动服务器得到修复。不幸的是,这些错误中的一个并不总是真正意味着他们所说的。

答案 1 :(得分:0)

我在persistence.xml

中添加此内容后,对我有用
<jar-file>../lib/my-jpa-models.jar</jar-file>