【问题标题】:Hibernate "Like" expressions on two sides Criteria在两侧休眠“Like”表达式
【发布时间】:2015-10-26 13:19:28
【问题描述】:

我想使用标准并创建类似但具有休眠标准的内容:

WHERE concat(X, Y) like '%Some Value%'

我不想使用查询连接,而是使用限制,因为我正在制作一个动态库来获取 like 运算符的左侧和右侧?我清楚了吗?如果没有,请让我提供更多说明。

谢谢!

【问题讨论】:

  • This SO post 建议不要使用 Criteria 对象。
  • .add(Restrictions.like("name", "%"+yourValue+"%") ) 还不够吗?
  • @bryce 我想要的是“名称”是一个连接,而不是列属性。
  • @TimBiegeleisen 你是对的,谢谢你,但不幸的是目前我无法改变。查询会让我在许多其他方面更容易。

标签: java hibernate


【解决方案1】:

我认为您的问题的最佳解决方案如下

...
Object[] params = {objX, objY, someValue};
Type[] typeOfParams = {Hibernate.STRING, Hibernate.STRING, Hibernate.STRING};
Criteria crit = session.createCriteria(Table.class);
crit.add(Restrictions.sqlRestriction("concat(?, ?) like '%?%'", params, typeOfParams));
...

当您使用Restrictions.sqlRestriction时,您可以构建具有多个参数的复杂查询,您只需设置每个参数的参数和类型,这是通过params数组和typeOfparams数组完成的。

希望这些信息对您有所帮助。

祝你好运。

【讨论】:

    【解决方案2】:

    希望它可以工作。

    Criteria crit = session.createCriteria(Table.class);
    crit.add(Restrictions.ilike("param1 || param2", "%" + dniWithLetter + "%"));
    

    如果上述代码不起作用,请通过以下链接。

    Can we concatenate two properties in Hibernate HQL query?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-07
      • 1970-01-01
      相关资源
      最近更新 更多