繁体   English   中英

像运算符一样的休眠查询语言不起作用

[英]Hibernate query language like operator not working

cmTDsquery = createQuery("from CmTxnDetailStage cstg where cstg.statusCd=:err" +
                    " and (cstg.id.batchName like :batchname or cstg.id.batchName like :batchname1)"+
                    " and cstg.prodTypeBlfd like :search1 "+
                    " and trunc(cstg.tranUploadDttm)=:uploadDt");
cmTDsquery.bindStringProperty("search1", CmTxnDetailStage.properties.prodTypeBlfd, search);

我声明搜索参数为

search = "MON%";

如果我将:search1替换为'MON%' ,它将正常工作并返回查询结果。

仅上述代码不起作用,并返回NULL

谢谢

----------------编辑1

cmTDsquery.bindStringProperty("batchname",CmTxnDetailStage.properties.batchName,batchNamePattern);
            cmTDsquery.bindStringProperty("batchname1",CmTxnDetailStage.properties.batchName,batchNamePattern1);

很抱歉在此提过很久,但是在bindStringProperty方法之上,它的作用就像是一种魅力。 batchname和batchname1包含“ CR_STLM_UBROL%”和“%RMB_PINDBT%”。

设置参数时这样做

“%” +搜索+“%”

我不明白这条线

cmTDsquery.bindStringProperty("search1",    CmTxnDetailStage.properties.prodTypeBlfd, search);

您是否设置了正确的值-“ MON%”,而不是例如“ MON”? 我已经使用过HQL,例如query.setParameter(“ search1”,“ MON%”),并且可以与类似的运算符一起正常工作。

我的代码几乎相同:

whereClause = whereClause + (whereClause.length() > 0 ? "AND " : "") + "ac.name LIKE :name ";

进一步在我的代码中:

if (searchCriteria.getNameSearchOperator() == SQL_STRING_SEARCH_OPERATORS.CONTAINS) {
    value = "%" + value + "%";
}
if (searchCriteria.getNameSearchOperator() == SQL_STRING_SEARCH_OPERATORS.START_WITH) {
    value = value + "%";
}
query.setParameter("name", value);

尝试使用setParameter代替bindStringProperty

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM