JPA 2.0:如何避免`SELECT NEW full.class.Name`中的完整类名?
问题描述:
如何避免将FQCN放入SELECT NEW ...
?JPA 2.0:如何避免`SELECT NEW full.class.Name`中的完整类名?
包在重构过程中经常发生变化,这可能会导致麻烦。
不确定我是否可以为JPA做些什么;我也对Hibernate 3.6解决方案感到满意(Ejb3Configuration
)。
请注意,SELECT NEW
中使用的类不是实体,因此<class>
在persistence.xml
中的标准技巧不起作用(YMMV)。
答
根据规范,构造函数的名称必须是完全限定的,JPA规范4.8.2。所以不,你无法避免它。为什么你不能只使用MyClass.class.getName()并因此应付重构?
答
不是直接的答案,但真正的重构也会改变查询中的包。如果这阻碍了你的重构,你可能会考虑为你的重构选择一个更好的工具。
我已经命名查询,并没有意识到我也可以在那里使用静态调用。 –