Hibernate Criteria运行时类

时间:2011-09-23 07:44:58

标签: hibernate criteria

这是我的等级:

// Table a
class A {}

// Table(" b
class B extends A {}

// Table my_class
class MyClass {

    A a;
}

我想从数据库中检索所有MyClass个对象,其关系为B,但不是A

Bjoined-subclass(ID a的扩展名。)

我的想法是:

Criteria criteria = session.createCriteria(MyClass.class);
criteria.add(Restrictions.eq("a.class", B.class);

但它输出错误:

could not resolve property: a.class of a.b.MyClass

这是我能说的最简单的方法。请记住,查询有点复杂。

问候。

1 个答案:

答案 0 :(得分:2)

我通常写一个DetachedCriteria,它选择所有B并过滤MyClass,其中A在AllBs中:

DetachedCriteria allBs = DetachedCriteria
  .forClass(B.class)
  .setProjection( Projections.property("id") );

Criteria  criteria = session.createCriteria(MyClass.class)
  .add(Subqueries.In("a", allBs);

(可能有错误,我不是java程序员。)

创建类似:

的内容
select ...
from MyClass
where A in (select id from A inner join B on ...)