我正在使用带有JBoss工具的eclipse kepler。
假设我有一个名为“People”的类,在本课程中我有org.hibernate.annotations.NamedQuery
或javax.persistence.NamedQuery
,名称为“People.findActives”。
当我工作时,为了调用这个命名查询,我写了这个:
entityManager.createNamedQuery("People.findActives").list();
使用javax.persistence.EntityManager或
时session.getNamedQuery("People.findActives").list();
使用org.hibernate.Session。
但是,假设我的团队中的一些开发人员只更改了类People中的查询名称。他可以做到,代码不会指责任何错误或警告,因此代码会不一致。 另一件事是,当按下Ctrl + Space时,如果eclipse搜索所有已命名的查询并显示建议,那将是非常酷的。
任何人都有解决方案吗?
答案 0 :(得分:1)
您可以为查询名称定义字符串常量,并在任何地方使用常量而不是名称字符串,例如:
@NamedQuery(name=Poeple.FIND_ACTIVITIES, ...)
public class Poeple {
public static final String FIND_ACTIVITIES = "findActivities";
...
}
我已经使常量名称大写以尊重常见的java约定,但如果你真的想要,你可以使用findActivities
。
答案 1 :(得分:0)
我的帖子Avoid hard-coding Hibernate properties解释了我处理您要避免的完全问题的方法。
我的解决方案有一些限制,但确实有效。希望它有所帮助。