我有一个名为info
class info
@Column(name="id")
int id
@Column(name="system")
string system
@Column(name="triesErrCount")
string triesErrCount
和DB中的相同类型。
现在triesErrCount
是String
(在类和DB(varchar)中),但在我的数据库中,它们都是数字(“1”,“7”,“56”......)。 / p>
我试着让所有小于50的信息,我试试这个:
SELECT x from PaymentInfo x where x.triesErr <=:triesErrAsString
在jpql中尝试ErrAsString =“50”
但它不起作用,我也尝试:
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
答案 0 :(得分:1)
字符串不是Int,因此数字比较不会像您期望的那样工作。您需要将字符串转换为数字才能使用数字运算符。有关如何在JPQL中执行此操作的示例,请参阅CAST ,但最好将数据库中的类型更改为数字类型。