通过associationPath获取标准

nik*_*ers 7 java hibernate

每隔一段时间,我就得到一个"org.hibernate.QueryException:重复的关联路径:myAssociation".这是因为我正在使用的复杂标准可以在许多地方定义相同的路径.我喜欢做类似的事情

Criteria association = myCriteria.getAssociation("wax");
if(association == null) association = myCriteria.createCriteria("wax");
Run Code Online (Sandbox Code Playgroud)

有没有这样的方式我可以检查一个协会是否已经到位?

干杯

Fox*_*BOA 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;
}
Run Code Online (Sandbox Code Playgroud)

  • 优秀解决方案 (2认同)

Chs*_*y76 3

无法通过 Criteria API 来做到这一点。但是,Map如果您确实需要这样做,您可以保持自己。

您可以:

  • 每个条件实例都有一个映射,由别名作为嵌套条件。
  • 有一张全球地图;它的键必须同时具有嵌套条件的别名和从根到当前条件的路径。