有没有办法在实体类和 package-info.java 中定义命名查询?
Posted
技术标签:
【中文标题】有没有办法在实体类和 package-info.java 中定义命名查询?【英文标题】:Is there a way to define named queries not within entity classes nor a package-info.java? 【发布时间】:2017-08-04 03:05:12 【问题描述】:有没有办法在 Hibernate 中注册不在实体类或 package-info.java 中的命名查询?
目前,我的命名查询是通过包装在 package-info.java 类中的 aorg.hibernate.annotations.NamedQueries
中的注释 org.hibernate.annotations.NamedQuery
定义的,但是当查询在不是实体的服务类中定义时,它应该具有public
范围或包私有(不显式,如果变量没有修饰符)在上述注释中可见,因为它们存在于不同的类中。我想知道是否可以通过定义将查询范围缩小到单个类(使它们private
)
并将它们注册到 Hibernate 的同一个类中。
【问题讨论】:
【参考方案1】:使用 Java Persistence API (JPA),它是一种 Java 规范,用于访问、持久化和管理 Java 对象/类和关系数据库之间的数据。
映射文件中提到的类以及包含 persistence.xml 文件(如果已打包)的 JAR 中的注释类会自动注册。如果应用程序尚未打包在 JAR 中,ObjectDB(作为扩展)会自动在包含 META-INF/persistence.xml 文件的类路径根目录下注册类。其他类必须使用类元素(用于单个类注册)或 jar-file 元素(用于注册 jar 文件中的所有类)显式注册。
【讨论】:
亲爱的 Tehima,如果您从其他网站 (objectdb.com/java/jpa/entity/persistence-unit) 复制/粘贴,您需要引用作者/来源(就像在论文中一样:D) 顺便说一句,你实际上并没有回答他的问题。它是关于命名查询。 @Matt 我认为您应该再次阅读问题,然后阅读资源,而不是在此处粘贴。所以你会更好地理解名称查询是如何在类/包之外注册的。 我做到了,我仍然相信您的回答与问题无关。例如,您使用 JPA 的第一个建议是没有意义的,因为他已经这样做了,因为 Hibernate 是 JPA 的实现。您是否认识到对您的回答投了三票反对?以上是关于有没有办法在实体类和 package-info.java 中定义命名查询?的主要内容,如果未能解决你的问题,请参考以下文章
eclipse 通过Hibernate 逆向生成实体类和映射文件
有没有办法使用 TypeAdapter 来序列化父类和子类实例