【发布时间】:2015-07-23 01:59:40
【问题描述】:
放置命名查询注释的逻辑位置是在数据访问类上,该类处理为实体保存、检索等数据的逻辑。
但是,如果我将 NamedQuery 注释放在未使用 @Entity 标记的类上,Hibernate 会引发异常“没有为该名称定义查询”。
为什么 Hibernate 或 JPA 限制命名查询只能放在实体上?会不会是未来的功能?
有一些粗略的解决方法,例如使用 empty entity to hold queries,这让我觉得不被这样限制是有用的。我知道我可以使用 XML 配置,但对非实体的命名查询仍然有用。
【问题讨论】:
-
一些 JPA 实现允许它们在任何类上,只是 JPA 规范和您选择的实现不允许
-
如果将它们作为托管类添加到
persistence.xml会怎样?