问题:
我有两个补充项目,一个是基础项目(基础项目),一个是共享实体,一个是特定项目(特定项目),需要从第一个项目中查询实体。
它们都访问相同的数据库,但是使用不同的方案和不同的用户/授权。尽管如此,两者在共享表上至少都有“SELECT”授权。
我发现有三种可能性将它们集成到Specific Project的persistence.xml中:
使用< class>列出基础项目中的每个实体Specific Projetc的persistence.xml中的标签。缺点:每当新实体出现时,必须将其添加到特定项目中才能看到
使用< jar-file>添加Base Project'.jar'文件特定项目的persistence.xml中的标记。缺点:它必须是jar文件的真实路径,可能会改变;
(BEST到目前为止)使用< class>在persistence.xml中添加Base Project的实体PACKAGE。标记,如Hibernate entityManager's setup documentation中所述。缺点:必须通过package-info.java文件使用包级别注释,我无法在任何地方找到它。
问题:
有谁知道是否真的可以使用包级别注释来表示persistence.xml中的实体包?
Hibernate文档指出它可以完成,但没有说明如何:
类
class元素指定一个 您完全合格的班级名称 将映射。默认情况下都正常 带注释的类和所有hbm.xml 存档中找到的文件是 添加到持久性单元 组态。你可以添加一些 外部实体通过课堂 虽然元素。作为一个延伸 规范,你可以添加一个包 元素中的名称(例如 org.hibernate.eg)。 小心,包将包括 在包级别定义的元数据 (即在package-info.java中),它不会 包括给定的所有类 封装
答案 0 :(得分:0)
正如bug report所述,它运作正常。如果您想要package-info.java
的示例,可以查看this hibernate forum post。
注意:此功能不是persistence XML schema中所述的规范的一部分。
<xsd:element name="class" type="xsd:string"
minOccurs="0" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation>
Class to scan for annotations. It should be annotated
with either @Entity, @Embeddable or @MappedSuperclass.
</xsd:documentation>
</xsd:annotation>
</xsd:element>