使用 Int 的 Java jSF NamedQuery
Posted
技术标签:
【中文标题】使用 Int 的 Java jSF NamedQuery【英文标题】:Java jSF NamedQuery using an Int 【发布时间】:2011-04-18 09:52:00 【问题描述】:我正在对整数进行搜索查询。这是 Factuur 类中的 NamedQuery:
@NamedQueries(
@NamedQuery(name = "getFactuurs", query = "SELECT f FROM Factuur f WHERE "
+ "f.periode LIKE :periode AND "
+ "f.carTracker.kenteken LIKE :carTrackerKenteken")
)
所以 'periode' 是 Factuur 类中的一个整数,我尝试过这样做:
+ "f.periode = :periode AND "
我没有得到异常,我只是从数据库中没有得到任何东西,而应该有......
【问题讨论】:
您确定数据库中至少有一条记录与您传入的periode
和carTrackerKenteken
的值匹配吗?
【参考方案1】:
JPA 规范的第 4.6.9 节规定 LIKE 运算符只能应用于字符串类型的表达式:
条件表达式中比较运算符[NOT] LIKE的使用语法如下:
string_expression [NOT] LIKE pattern_value [ESCAPE escape_character]
string_expression 必须有一个字符串值。
似乎没有将整数转换为字符串的函数。如果您要查询一个范围,您可能应该计算应用程序中的下限值和上限值,并使用 BETWEEN 表达式进行查询。如果您需要使用任意 LIKE 表达式进行查询,那么您的字段可能应该是字符串类型。
【讨论】:
以上是关于使用 Int 的 Java jSF NamedQuery的主要内容,如果未能解决你的问题,请参考以下文章
java中的Web开发存在哪些Spring+JSF/Facelets的替代品?
Java EE 6:JSF 与 Servlet + JSP。我应该费心学习 JSF 吗?