Netbeans,JPA 实体 Bean 在单独的项目中.未知实体 Bean 类



我在 Netbeans 中工作,并将我的实体 Bean 和 Web 服务放在单独的项目中。 我将实体 bean 包含在 Web 服务项目中,但是 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 数据源设置为 Glassfish JDBC 资源的值。 不幸的是,问题仍然存在。 我已经打开了 WAR 文件并验证了 EntityBean.jar 文件是最新版本,并且位于 WAR文件的 WEB-INF/lib 目录中。 我认为这与实体未在实体经理处"注册"这一事实有关。 但是我不知道为什么他们没有注册。

不,

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

编辑

通过从 netbeans 编辑持久性.xml进行另一个测试,取消选中"将所有实体类包括在 .." 中,然后选择"添加类..."选项并选择所有实体类。沿着实体类,您还应该找到您尝试访问的实体类。

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

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

在我persistence.xml中添加这个后,它对我有用:

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

相关内容

最新更新