这是我的等级:
// Table a
class A {}
// Table(" b
class B extends A {}
// Table my_class
class MyClass {
A a;
}
我想从数据库中检索所有MyClass
个对象,其关系为B
,但不是A
。
B
是joined-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
这是我能说的最简单的方法。请记住,查询有点复杂。
问候。
乌
答案 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 ...)