Hibernate标准运行时类

Hibernate标准运行时类,hibernate,criteria,Hibernate,Criteria,这是我的层次结构: // Table a class A {} // Table(" b class B extends A {} // Table my_class class MyClass { A a; } 我想从数据库中检索所有与B相关但与a无关的MyClass对象 B是一个连接的子类(表a的id扩展) 我的想法是: Criteria criteria = session.createCriteria(MyClass.class); criteria.add(Restri

这是我的层次结构:

// Table a
class A {}

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

// Table my_class
class MyClass {

    A a;
}
我想从数据库中检索所有与
B
相关但与
a
无关的
MyClass
对象

B
是一个
连接的子类
(表
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在所有B中:

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

+我喜欢这个主意。我知道您不是java开发人员,但它说我不能将字符串转换为整数。有什么想法吗?谢谢你的时间,A应该是A。非常感谢。