Java Hibernate / Spring, выполняет запрос частичного соответствия ("содержит")? - PullRequest
5 голосов
/ 02 марта 2011

Я все еще довольно новичок в спящем режиме и, похоже, не могу найти, как это сделать, возможно, я ищу, используя неверную терминологию.Я передаю предоставленное пользователем значение из моего пользовательского интерфейса, в приведенном ниже примере это переменная testvalue.Он предназначен для поиска, поэтому, если то, что вводит пользователь, содержится где-либо в записи e.filenametxt, я хочу, чтобы эта строка возвращалась как совпадение.

Например, testvalue = "file1", я бы хотел, чтобы он мог найти строку, в которой e.filenametxt = "file1/someotherinfo/"

String SQL_QUERY = "from EdrmTest e where e.filenametxt is :foreignkeytest ";
Query query = session.createQuery(SQL_QUERY);
query.setParameter("foreignkeytest", testvalue);

Любой совет приветствуется.

Ответы [ 2 ]

7 голосов
/ 02 марта 2011
String SQL_QUERY = "from EdrmTest e where e.filenametxt LIKE :foreignkeytest ";
Query query = session.createQuery(SQL_QUERY);
query.setParameter("foreignkeytest", "%" + testvalue + "%");\

Попробуй это. Подстановочные знаки должны быть в переменной (по какой-то причине).

6 голосов
/ 02 марта 2011

Вы также можете использовать Criteria API для программной установки этих типов предложений; иногда может быть гораздо приятнее обрабатывать запросы с помощью этого API, чем с запросами на основе HQL / String, если вам нужно добавить какую-либо динамическую логику (то есть включить некоторые пункты, основанные на условии).

Criteria crit = session.createCriteria(EdrmTest.class); //the persistent class goes here
crit.add( Restrictions.like("filenametxt", testvalue + "%") );
//execute the query:
List<EdrmTest> results = (List<EdrmTest>) crit.list();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...