Hibernate标准运行时类



这是我的层次结构:

// Table a
class A {}
// Table(" b
class B extends A {}
// Table my_class
class MyClass {
    A a;
}

我想从数据库中检索与B有关系但不与A有关系的所有MyClass对象。

Bjoined-subclass(表a的id扩展)。

我的想法是:

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

但是输出一个错误:

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

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

致意。

Udo .

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

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 ...)

最新更新