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

luf*_*ffy 5 java hibernate hibernate-criteria

几分钟前收到错误“重复别名”,我开始思考“我们可以检查别名是否已经创建?别名已经存在。”

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

例如 :

Criteria criteria = getSeession().createCriteria(Example.class,"example");
criteria.createAlias("example.test","test");
Run Code Online (Sandbox Code Playgroud)

现在我想要这个,我会检查这个“测试”别名是否已经创建,我不会创建,我不会创建。

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

v.l*_*nev 3

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

    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();
Run Code Online (Sandbox Code Playgroud)

要使用Aliases类,您只需下载此库(不需要额外的 jar):Fluent-hibernate