【问题标题】:Binary value in WHERE clause (Hibernate)WHERE 子句中的二进制值(休眠)
【发布时间】:2019-04-09 08:27:36
【问题描述】:

我想在 WHERE 子句中选择具有二进制值的行。 二进制值是十六进制:“07F4”

以下 HQL 语句不起作用(“意外令牌 X”)。

from Agprfw where prfdatk1 = X'07F4'

【问题讨论】:

  • where prfdatk1 = '0x07F4'where prfdatk1 = 0x07F4 是否有效?
  • 对于 ['0x07F4'] 我得到 0 行,这是不正确的。对于 [0x07F4] 我得到一个异常(NumberFormatException:对于输入字符串:“0x07F4”)。

标签: java sql hibernate hql


【解决方案1】:

试试这个:

byte[] param = new byte[]{ 0x07, 0xf4};
List<Agprfw> rslt = em.createQuery("from Agprfw a where a.prfdatk1 = :b", Agprfw.class)
         .setParameter("b", param)
         .getResultList();

在 JPQL 中将列引用为 alias.column 很重要,所以不要跳过它。

【讨论】:

    【解决方案2】:

    我找到了解决办法:

    from Agprfw where HEX(prfdatk1) = '07F4'
    

    【讨论】:

      猜你喜欢
      • 2014-08-13
      • 2017-04-25
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 1970-01-01
      • 2011-05-21
      • 2011-08-11
      • 2013-02-02
      相关资源
      最近更新 更多