Criteria查询使用特定子类查找行

Sim*_*Pip 3 java hibernate criteria table-per-subclass

我将从一个消毒的例子开始.

在我的系统中,我有班级汽车.汽车有很多领域,其中就是GearShift类的gearShift实例.

public class Car {
    private GearShift gearShift;

    // Snip
}
Run Code Online (Sandbox Code Playgroud)

GearShift是一个抽象类,AutomaticShift和StickShift继承自该类.这在Hibernate中映射为table-per-subclass.

现在,说我想让自动换档的汽车.我更喜欢通过Hibernate标准来做这件事,所以我想象一下我可以添加的"ofType"限制,如下所示.

getSession().createCriteria(Car.class)
    .add(Restrictions.ofType(AutomaticShift.class)
    .list();
Run Code Online (Sandbox Code Playgroud)

这有可能吗?

Sel*_*lim 9

旧:

这个怎么样?

getSession().createCriteria(AutomaticShift.class).list()
Run Code Online (Sandbox Code Playgroud)

编辑:

这应该可以解决问题;

getSession().createCriteria(Car.class).createAlias("gearShift", "gs").add(Restrictions.eq("gs.class", AutomaticShift.class)).list();
Run Code Online (Sandbox Code Playgroud)