我们可以检查休眠条件别名是否已经存在?

Can we check hibernate criteria alias already exists?

几分钟前得到一个错误 "duplicate alias" 我开始考虑 "Can we check alias was already created? alias was already exists."

你知道这件事吗?我们可以检查一下吗?

例如:

Criteria criteria = getSeession().createCriteria(Example.class,"example");
criteria.createAlias("example.test","test");

现在我想要这个,我会检查这个 "test" 别名是否已经创建我不会创建不是我创建。

这可能吗?如果可能的话怎么办?如果不可能,你能提供任何其他解决方案吗?

我们遇到了复杂搜索条件的类似问题。一个可能的解决方法是有一个额外的标准构建基础设施来忽略别名重复。例如,使用这样的 classes:Aliases, Alias .

    Criteria criteria = getSeession().createCriteria(Example.class, "example");

    Aliases aliases = Aliases.create()
        .add("example.test", "test", JoinType.INNER);
    criteria.add(Restrictions.eq("test", "test_value"));

    aliases.addToCriteria(criteria); // add aliases to the criteria

    List<Example> examples = criteria.list();

要使用 Aliases class 你只需下载这个库(它不需要额外的 jar):fluent-hibernate.