我有以下两个类(Java Hibernate):
public class Grupo{
//plain Attributes
}
和
public class Salon extends Grupo{
//plain Attributes
}
拥有两种类型的对象。
使用以下条件查询:
s.createCriteria(Grupo.class).list();
我按预期得到所有Grupo类型的对象,即Grupo和Salon。所以,我想知道的是,如果Criteria Query中有一种方法可以轻松获得不是“沙龙”对象的“Grupo”对象。我想尽可能避免使用鉴别器(在db中这两个类都有自己的表)
任何帮助都将受到高度赞赏。
编辑:纠正了错误的java语法,对我有多蹩脚。
答案 0 :(得分:2)
概念问题是所有沙龙对象都是Grupos。
你能否改变Salon,使其不是来自Grupo,而是Grupo和Salon分享一个基类?
否则,您将不得不使用鉴别器。
答案 1 :(得分:2)
如果您不必使用Criteria,则可以使用hql
执行此操作s.createQuery("select g from Grupo g where g.class = Grupo").list();
据我所知,对于Criteria,您必须有一个鉴别器列才能使其正常工作。
s.createCriteria(Grupo.class).add(Restrictions.eq("class", "G").list();
如果您对Grupos的鉴别器值是G。
@Mark Robinson建议的共享基类方法也值得考虑......