2015-04-17 3 views
0
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); 

Я объявил параметр поиска какHibernate языка запросов, как оператор не работает

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%».

+0

Где этот метод "bindStringProperty"? В Query нет такого метода. Показать код, в котором вы указали «cmTDsquery» эту переменную? – Nimesh

+0

@Naman, Вот объявление - Запрос cmTDsquery = null; – user2725107

+0

Этот синтаксис не кажется, что вы используете hibernate для запроса db. – Nimesh

ответ

0

Я не могу понять точно линию

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

ли установить вам правильное значение - «MON%», а не, например «MON»? Я использовал HQL как query.setParameter («search1», «MON%»), и он отлично работал с аналогичными операторами.

2

ли как заходящего это во время параметра

"%" + Поиск + "%"

+0

cmTDsquery.bindStringProperty ("search1", CmTxnDetailStage.properties.prodTypeBlfd, search + "%"); не решает проблему. Я даже использовал cmTDsquery.bindStringProperty («search1», CmTxnDetailStage.properties.prodTypeBlfd, «MON%»); но до сих пор нет успеха. – user2725107

+0

кажется правдой. Я не видел bindStringProperty где угодно. Что вы пытаетесь сделать с bindStringProperty? – Nimesh

+0

Вы можете написать cmTDsquery.setParameter ("search1", search + "%"); – Nimesh

0

Мой код почти то же самое:

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.

+0

Привет Wis, Каков класс запроса. Можете ли вы объяснить на примере. Спасибо – user2725107

+0

Здесь запрос - объект javax.persistence.Query class – Nimesh

+0

Наман прав, я использую объект 'javax.persistence.Query', который является тем, что предлагается JPA (независимо от базовой реализации, Hibernate или любого другого ORM, событие, если Hibernate в основном используется). – Wis

Смежные вопросы