【问题标题】:jpql compare string as intjpql比较字符串为int
【发布时间】:2014-06-17 12:58:37
【问题描述】:

我有一个名为info的对象

class info
@Column(name="id")
int id
@Column(name="system")
string system
@Column(name="triesErrCount")
string triesErrCount

和数据库中的相同类型。 现在triesErrCountString(在类和数据库中(varchar)),但在我的数据库中,它都像数字(“1”、“7”、“56”...)。

我尝试获取所有小于 50 的信息,我试试这个:

SELECT x from PaymentInfo x where x.triesErr <=:triesErrAsString

triesErrAsString = "50" in jpql

但是不行,我也试试:

class info
@Column(name="id")
int id
@Column(name="system")
string system
@Transient
string triesErrCount
@Column(name="triesErrCount")
int triesErrCountAsInt

SELECT x from PaymentInfo x where x.triesErr <=:triesErrAsInt

triesErrAsInt = 50

但仍然无法正常工作。我正在使用 jpa 1.0。和 OpenJPA 1.2.1

【问题讨论】:

  • 你说的不工作是什么意思?
  • 在我的结果中,我得到了所有信息 - 包括大于 50 的 infos.triesErrCount
  • 当您查看所调用 SQL 的日志时,而不是将其视为魔法黑匣子?

标签: java jpa db2 jpql


【解决方案1】:

字符串不是 Int,因此数字比较不会像您期望的那样工作。您需要将字符串转换为数字才能使用数字运算符。有关如何在 JPQL 中执行此操作的示例,请参阅 CAST ,但最好将数据库中的类型更改为数字类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 2011-06-21
    相关资源
    最近更新 更多