【问题标题】:Netbeans, JPA Entity Beans in seperate projects. Unknown entity bean classNetbeans,JPA 实体 Beans 在单独的项目中。未知实体 bean 类
【发布时间】:2013-11-10 18:02:00
【问题描述】:

我在 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 目录中。我认为这与实体没有向实体经理“注册”这一事实有关。但是我不知道为什么他们没有被注册。

【问题讨论】:

    标签: java jpa netbeans eclipselink jax-rs


    【解决方案1】:

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

    编辑

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

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

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

    【讨论】:

    • 验证了您推荐的要点,但这些要点已经到位。感谢您的意见。我不知道为什么实体没有在实体管理器中注册。
    • @Stu 根据您的 persistence.xml 和您使用 gf 的事实更新了答案。
    【解决方案2】:

    在我的persistence.xml 中添加此内容后,它对我有用:

    <jar-file>../lib/my-jpa-models.jar</jar-file>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多