我有一个Hibernate条件调用,我想在一个SQL语句中执行.我正在尝试做的是选择Parent的实例,其中Child具有一系列值的属性(SQL IN子句),所有这些都是在使用外连接加载子项时.这是我到目前为止所拥有的:
Criteria c = session.createCriteria(Parent.class);
c.createAlias("children", "c", CriteriaSpecification.LEFT_JOIN)
.setFetchMode("c", FetchMode.JOIN)
.add(Restrictions.in("c.property", properties));
c.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
return c.list();
Run Code Online (Sandbox Code Playgroud)
这是一些示例数据:
Parent
Parent ID
A
B
C
Children
Child ID Parent ID property
... A 0
... A 2
... A 7
... B 1
... C 1
... C 2
... C 3
Run Code Online (Sandbox Code Playgroud)
我想要做的是如果其中一个孩子的属性等于我的绑定参数,则返回父母及其所有孩子.我们假设属性是一个包含{2}的数组.在这种情况下,调用将返回父A和C,但他们的子集只包含元素2.即父[子]:
A [2]&C [2]
我想要的是:
A [0,2,7]&C [1,2 3]
如果这不是一个bug,它似乎是一个破碎的语义.我不知道如何调用A.getChildren()或C.getChildren()并返回1条记录将被认为是正确的 - 这不是一个投影.即如果我扩充查询以使用默认的选择提取,它将返回正确的子集合,带有大量查询的albiet:
c.createAlias("children", "c").add(
Restrictions.in("c.property", properties));
Run Code Online (Sandbox Code Playgroud)
这是一个错误吗?如果没有,我怎样才能达到预期的效果呢?
我想知道是否有人可以建议一个允许我同时使用多个输入日期格式的jQuery datepicker插件的插件或解决方案.这将允许用户以任何指定的格式输入日期.即:
3 31 10
3/31/2010
3-31-10
Run Code Online (Sandbox Code Playgroud)
在用户标签出来之后,我并不在意这个值是否会被破坏为某种特定格式.一个好的输入掩码插件也可以用于我的目的,但是,这个流行的插件似乎期望每个字段都有一个固定的基数,这将无法工作,因为我希望用户能够输入3或03个月例如,三月.