Hibernate标准API和子集

Hibernate标准API和子集,hibernate,criteria,subset,subquery,Hibernate,Criteria,Subset,Subquery,首先,我刚开始冬眠 假设我们有一个如下所示的数据结构: 实体A有0个..*相关Bs。这些Bs中的一个可能将属性isDefault设置为true。对于每个A,在最大值处仅存在一个B,该属性设置为true 如果存在默认的B,我想得到它们的全部As,否则B应该为null。以下是我到目前为止得到的信息: Criteria c = session.createCriteria(A.class); c.createCriteria("bs").add(Restrictions.eqOrIsNull("is

首先,我刚开始冬眠

假设我们有一个如下所示的数据结构:

实体A有0个..*相关Bs。这些Bs中的一个可能将属性isDefault设置为true。对于每个A,在最大值处仅存在一个B,该属性设置为true

如果存在默认的B,我想得到它们的全部As,否则B应该为null。以下是我到目前为止得到的信息:

Criteria c = session.createCriteria(A.class);

c.createCriteria("bs").add(Restrictions.eqOrIsNull("isDefault", true));
当然,这将导致all有一个默认的B,a的所有B都连接到a


我将感谢任何帮助

我认为您需要尝试一些类似的方法,例如在B为null或B将字段“isDefault”设置为true的情况下获取所有A:

Criteria c = session.createCriteria(A.class);
Disjunction disjunction = Restrictions.disjunction();
c.add(disjunction);
disjunction.add(Restrictions.isNull("bs"));
c.createAliase("bs", "b");
disjunction.add(Restrictions.eq("b.isDefault", true));
请点击此链接:

不完全正确

它实际上并不取决于所有Bs的子集是否为null。我需要得到一切。如果任何B连接到这些A中的任何一个,则只有B应连接/显示到A,这是A的默认值