Hibernate继承查询(条件)

时间:2012-02-23 02:09:32

标签: java hibernate inheritance criteria

我有以下两个类(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语法,对我有多蹩脚。

2 个答案:

答案 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建议的共享基类方法也值得考虑......