【发布时间】:2014-01-20 23:45:31
【问题描述】:
我正在使用 Grails 2.2.3
我正在尝试进行类似产品搜索
域对象映射到旧版 JDE 表并且是:
class JdeProduct {
String itemNum
String searchText
String description
String transUnitOfMeasure
String priceUnitOfMeasure
String saleableProd
static mapping = {
autoTimestamp false
table name: 'F4101', schema: 'PRODDTA'
version false
id column: 'IMITM', generator: 'assigned'
itemNum column: 'IMLITM', sqlType: 'char', length: 25
searchText column: 'IMSRTX', sqlType: 'char', length: 30
description column: 'IMDSC1', sqlType: 'char', length: 30
transUnitOfMeasure column: 'IMUOM1', sqlType: 'char', length: 2
priceUnitOfMeasure column: 'IMUOM3', sqlType: 'char', length: 2
saleableProd column: 'IMSHCN', sqlType: 'char', length: 3
}
}
我的控制器有这个方法来查询数据库:
def searchJde = {
String likeExpression = '%' + params.searchTerm + '%'
log.debug("Search for products like ${likeExpression}")
def products = JdeProduct.findAllItemNumLike(likeExpression)
log.debug("Products found: ${products.size()}");
render products as JSON
}
如果 searchTerm 的值为“SL”,即使直接在 Oracle 中执行类似查询确实会返回结果,也不会返回任何结果。
Grails 的日志输出包括:
2014-01-21 09:30:16,294 [http-bio-9080-exec-1] DEBUG controller.ProductController - Search for products like %SL%
2014-01-21 09:30:16,356 [http-bio-9080-exec-1] DEBUG hibernate.SQL - select this_.IMITM as IMITM0_0_, this_.IMDSC1 as IMDSC2_0_0_, this_.IMLITM as IMLITM0_0_, this_.IMUOM3 as IMUOM4_0_0_, this_.IMSHCN as IMSHCN0_0_, this_.IMSRTX as IMSRTX0_0_, this_.IMUOM1 as IMUOM7_0_0_ from PRODDTA.F4101 this_ where this_.IMLITM like ?
Hibernate: select this_.IMITM as IMITM0_0_, this_.IMDSC1 as IMDSC2_0_0_, this_.IMLITM as IMLITM0_0_, this_.IMUOM3 as IMUOM4_0_0_, this_.IMSHCN as IMSHCN0_0_, this_.IMSRTX as IMSRTX0_0_, this_.IMUOM1 as IMUOM7_0_0_ from PRODDTA.F4101 this_ where this_.IMLITM like ?
2014-01-21 09:30:16,356 [http-bio-9080-exec-1] TRACE sql.BasicBinder - binding parameter [1] as [VARCHAR] - true
2014-01-21 09:30:16,731 [http-bio-9080-exec-1] DEBUG controller.ProductController - Products found: 0
问题似乎与:
binding parameter [1] as [VARCHAR] - true
我希望这样说:
binding parameter [1] as [VARCHAR] - %SL%
为什么绑定为真?
【问题讨论】:
标签: java hibernate grails grails-orm