每隔一段时间,我就会得到一个“org.hibernate.QueryException:重复的关联路径:myAssociation”。这是因为我正在使用的复杂标准可以在许多地方定义相同的路径。我喜欢做像
这样的事情Criteria association = myCriteria.getAssociation("wax");
if(association == null) association = myCriteria.createCriteria("wax");
有没有这样的方法可以检查关联是否已经到位?
干杯
的Nik
答案 0 :(得分:5)
实际上您可以通过别名找到Subcriteria,但代码未发布(即在CriteriaImpl类中)。请参阅下面的示例:
private Subcriteria getCritria(Criteria pCriteria, String pAlias) {
Iterator<Subcriteria> iter = ((CriteriaImpl)pCriteria).iterateSubcriteria();
while (iter.hasNext()){
Subcriteria sub = iter.next();
if (pAlias.equals(sub.getAlias())){
return sub;
}
}
return null;
}
答案 1 :(得分:3)
通过Criteria API无法做到这一点。但是,如果您真的需要这样做,您可以自己保持Map
。
你可以: