java - hibernate :标准。向标准对象添加别名

标签 java hibernate criteria alias

在 Hibernate 中,有没有办法创建并向 Criterion 对象添加别名。我有以下工作要做:

我从包含许多表的大型数据库中进行动态搜索。搜索有许多(25+)客户端选择的可选非排他参数。这需要使用 Hibernate Criteria API 来实现可管理性。在我的 DAO 中,我有以下方法:

Public List<myPojoClass> getDataByCriterion( List<Criterion> restrictionList) {
    Session s = HibernateUtil.currentSession(); 
    Criteria c = s.createCriteria(myPojo.class); 
    for (Criterion crit : restrictionList){     
        c.add(crit); 
    }  

List<myPojoClass> response = c.list(); 
return response;
}

我需要与 myOtherPojo.class 进行连接,并想知道是否可以向上面的条件列表添加别名。
像这样的东西:

restrictionsList.add(... ...createAlias("myOtherPojo.class" , "mop");

然后,我需要向此类添加其他逻辑和,如上所述。

最佳答案

又是你! ;)

您可以传递条目集合(例如 HashMap)并迭代它们以填充您的别名...如下所示:

Public List<myPojoClass> getDataByCriterion( List<Criterion> restrictionList, HashMap<String,String> aliases) {
Session s = HibernateUtil.currentSession(); 
Criteria c = s.createCriteria(myPojo.class); 
for (Criterion crit : restrictionList){     
    c.add(crit); 
}
for (Entry<String, String> entry : aliases.entrySet()){
    c.createAlias(entry.getKey(), entry.getValue());
}

List<myPojoClass> response = c.list(); 
return response;
}

如果您想更改获取模式,您可以执行类似的操作。当然,调用方法需要知道数据模型,以便正确设置别名,否则可能会在运行时出错。

关于java - hibernate :标准。向标准对象添加别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11528578/

相关文章:

java - 如何解决重复条目 : com/google/gson/JsonParseException. 类?

java - 为什么找不到我打开的文件,因为该文件就在那里

java - 在 sql server 表上设置 IDENTITY_INSERT 时出错

java - OSGi 上的 PostgreSQL 连接器

oracle - 有没有办法使用 Hibernate Criteria API 对结果进行排名?

java - Hibernate条件查询不遵守多重限制

java - 需要帮助理解方法中的数组 - java

java - 如何使用 VLCJ 和 JavaFX 播放视频文件?

java - 无法获取 JSON 中的嵌套对象列表

java - EJB 3 中的条件查询