Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在persistence.xml之外定义jpa实体类_Java_Orm_Jpa - Fatal编程技术网

Java 在persistence.xml之外定义jpa实体类

Java 在persistence.xml之外定义jpa实体类,java,orm,jpa,Java,Orm,Jpa,是否有一种方法可以在persistence.xml之外(即在单独的文件中)定义jpa实体类 不能将persistence.xml作为外部文件也就足够了 提前感谢,, 史蒂文 编辑: 对不起,我不清楚。这是在JavaSE环境中实现的。 另外,我不希望在persistence.xml文件中列出some.class.AClass。 这是因为我想动态创建这个类列表,并引用一个包含这个列表的文件 编辑2: 通过在打包之前在构建时编写persistence.xml文件来解决此问题。如果有人感兴趣,我使用Sc

是否有一种方法可以在persistence.xml之外(即在单独的文件中)定义jpa实体类

不能将persistence.xml作为外部文件也就足够了

提前感谢,, 史蒂文

编辑: 对不起,我不清楚。这是在JavaSE环境中实现的。 另外,我不希望在persistence.xml文件中列出some.class.AClass。 这是因为我想动态创建这个类列表,并引用一个包含这个列表的文件

编辑2:
通过在打包之前在构建时编写persistence.xml文件来解决此问题。如果有人感兴趣,我使用ScanNotation发现所有用@Entity注释的类,并将它们写入target/classes/META-INF(使用maven)中的persistence.xml文件。

在Java SE环境中,可移植应用程序必须在
persistence.xml
中明确列出类。根据JPA 1.0规范:

6.2.1.6映射文件、jar文件、类、排除未列出的类 必须安装以下类: 隐式或显式地表示为 要创建的托管持久性类 包含在持久性单元中: 实体类;可嵌入类; 映射超类

托管持久性类的集合 由持久性单元管理的 通过使用一个或多个 以下:

  • 一个或多个对象/关系映射XML文件
  • 将搜索类的一个或多个jar文件
  • 类的显式列表
  • 的根目录中包含的带注释的托管持久性类 持久性单元(除非
    排除未列出的类
    元素为 (指定)
(……)

命名的托管持久性的列表 也可以指定类 JAR文件的,或附加于JAR文件的 和映射文件。任何映射 在这些上找到元数据批注 类将被处理,或者 将使用映射 注释默认值。类元素 用于列出托管持久性 班级所有命名的托管 必须指定持久性类 在JavaSE环境中确保 便携性。可移植Java SE 申请不应依赖 此处描述的其他机制 指定托管持久性 持久化单元的类。 持久性提供程序也可能需要 实体类和 要管理的类必须是 在每个
persistence.xml
JavaSE中的文件 环境。

的根目录中包含的所有类 还将搜索持久性单元 用于带注释的托管持久性 类和任何映射元数据 在它们上找到的注释将被删除 已处理,否则将映射它们 使用映射注释默认值。 如果不打算 带注释的持久性类 包含在 持久化单元必须包含在 持久化单元
排除未列出的类
元素 应该使用最新版本
排除未列出的类
元素为 不适用于Java SE 环境。

所管理的实体的结果集 持久化的单位是并集 在这些源中,使用映射 元数据注释(或注释) 任何给定类的默认值) 被XML映射覆盖 信息文件(如果两者都有) 注释以及XML映射 为了那个班。最小便携式 覆盖级别为 持久字段或属性

如果可移植性不是一个问题,那么一些提供者确实支持JavaSE环境中的实体发现(例如EclipseLink)


如果考虑可移植性,使用第三方容器(如Spring)会有所帮助。

如果您愿意并且能够将实体类与persistence.xml文件一起打包到JAR文件中,那么您不需要在
元素中列出每个实体。当使用META-INF目录中的persistence.xml文件部署JAR时,JAR将在运行时搜索具有
@Entity
注释的任何类。

您的意思是要停止在persistence.xml中包含元素吗?是的。很抱歉,我忘了提到这是在JavaSE环境中进行的。如果您不介意不可移植,一些提供者确实支持JavaSE环境中的发现。因此,请澄清是否需要考虑可移植性(以及您正在使用的JPA提供程序)。此外,可移植性也是一个问题,因为我正在使用maven对包含我的实体的不断变化的外部jar进行测试。仅在JavaEE环境中。但问题真的不清楚。嗨,我有一个maven应用程序,.jar名称和路径会随着时间的推移而改变。我可以用Hibernate 3.6扫描所有类吗?另外,在Hibernate第2章中,有
Ejb3Configuration
。我能给它添加一个
persistence.xml
吗?基本上,我希望有一个带有PU的“核心”模块,并在插件中添加实体。