java – 使用可选参数在HQL中动态搜索查询?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 使用可选参数在HQL中动态搜索查询?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1324字,纯文字阅读大概需要2分钟。
内容图文
我正在开发一个我需要搜索功能的应用程序,我想编写根据参数动态创建的HQL查询.
目前我有4个参数,而搜索所有参数是必需的,或者根据用户想要搜索的方式需要1或2或3个参数.
public List<Plot> fetchSearchedPlots(int plotType, String plotSize, String min, String max)
{
Session session = sessionFactory.getCurrentSession();
List<Plot> searchedLists = new ArrayList<Plot>();
String query = "FROM Plot where type = ? and size = ? and price >= ? and price <= ?";
searchedLists = (List<Plot>)session.createQuery( query )
.setInteger( 0, plotType )
.setString( 1, plotSize )
.setString( 2, min )
.setString( 3, max ).list();
return searchedLists;
}
这是我对所有4个参数的一般查询,现在我必须编写一个搜索查询,其中我使用多个可选参数,如何使用可选参数进行此查询?请将我的查询转换为动态可选参数查询?
谢谢
解决方法:
动态查询的另一种变体是使用Criteria API:
Criteria crit = session.createCriteria(Plot.class);
if (status != null) {
crit.add(Restrictions.eq("status", status));
}
// other where clauses
对于基于输入的动态条件创建问题的变体:
Criteria criteria = session.createCriteria(Plot.class);;
if(type != null) {
criteria.add(Restrictions.eq("type", type));
}
if(size != null) {
criteria.add(Restrictions.eq("size", size));
}
if(min != null && max != null) {
criteria.add(Restrictions.between("price", min, max));
}
List<Case> searchedLists = criteria.list();
return searchedLists;
内容总结
以上是互联网集市为您收集整理的java – 使用可选参数在HQL中动态搜索查询?全部内容,希望文章能够帮你解决java – 使用可选参数在HQL中动态搜索查询?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。