有没有办法在实体类和 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 来序列化父类和子类实例

Symfony - 有没有办法将实体设置为全局?

有没有办法让 NSFetchedResultsController 检测多个实体的变化?

有没有办法在 RealityKit 中将视图呈现为实体?

有没有办法在测试中选择性地禁用对实体修改的审计?