首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate :如何在hibernate原生sql查询语言的where子句中动态添加属性

Hibernate :如何在hibernate原生sql查询语言的where子句中动态添加属性
EN

Stack Overflow用户
提问于 2019-08-14 04:19:07
回答 1查看 213关注 0票数 0

我需要由hibernate处理以下查询。

代码语言:javascript
复制
select * from 
  (select ROWNUM rnum,
    fullData.* from 
    (select count(*) over () as rowcnt,
    origQry.*
    from (select emp_id, name, role from employee 
        where 
        1 = 1 
        AND
        emp_id =? 
        AND
        name = ?
        AND
        role = ?
        order by emp_id asc)  origQry

) fullData where rownum <= ?
) where rnum > ?;

我可以用hibernate原生sql参数化查询语言做到这一点。例如:

代码语言:javascript
复制
    SQLQuery sqlQuery = session.createSQLQuery("select * from (select ROWNUM rnum,fullData.* from (select count(*) over () as rowcnt,origQry.* from (select emp_id, name, role from employee where 1 = 1 AND    emp_id =? AND name = ? AND role = ? order by emp_id asc)  origQry) fullData where rownum <= ?) where rnum > ?");
sqlQuery.setParameter(1,someValye);
sqlQuery.setParameter(2,someValye);
sqlQuery.setParameter(3,someValye);
sqlQuery.setParameter(4,someValye);
sqlQuery.setParameter(5,someValye);

但问题是,在origQry where claue中并不总是需要添加所有这三个属性(emp_id、name、role)。每当这些属性的值来自用户输入时,只有它应该被添加到origQry where calues中。

如果可以使用本机查询语言之外的任何其他方法,我也可以使用它。请建议一些解决方案。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-08-14 05:33:19

如果您实际使用的是JPA (而不是Hibernate专有注释),则可以创建一个dynamic query并构建WHERE标准,就像在this answer中一样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57484794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档