首先,我是Hibernate的新手。
假设我们有一个如下数据结构:
实体A具有0 .. *关联的Bs。其中一个B可能将属性“isDefault”设置为true。对于每个A,只有一个B存在于max,并且此属性设置为true。
我希望得到所有As的默认B(如果存在),否则B应该为null。这是我到现在所得到的:
Criteria c = session.createCriteria(A.class);
c.createCriteria("bs").add(Restrictions.eqOrIsNull("isDefault", true));
当然,这将导致所有As具有默认B,其中A的所有B都附加到A.
我将不胜感激任何帮助!
答案 0 :(得分:0)
我认为你需要尝试类似“获取所有A,其中B为空或B将字段'isDefault'设置为true”:
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));
请点击此链接:https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querycriteria.html
答案 1 :(得分:0)
不完全是。
它实际上并不取决于所有B的子集是否为空。我需要得到所有的As。如果任何B附加到这些A中的任何一个,则只应将B附加/显示给A,这是A的默认值。