JAVA: NamedQuery String problem

Здравствуйте, ребята. У меня возникли проблемы с точными совпадениями при выполнении NamedQuery.

Я в настоящее время используется что-то вроде этого:

@NamedQuery(name = MyClass.GET_ENTRY_BY_NAME, query = "select e from Entry e where e.name =:"+ Entry.NAME )

...

Query query = em.createNamedQuery(MyClass.GET_ENTRY_BY_NAME);
        query.setParameter(Entry.NAME, myEntry.getName());

Это работает для большинства случаев, однако я заметил, что в случае, если пользователь передает имя файла с пробелом в конце, namedQuery игнорирует этот символ. Например:

Query query = em.createNamedQuery(MyClass.GET_ENTRY_BY_NAME);
        query.setParameter(Entry.NAME, myEntry.getName()+ " ");

вернет то же самое результат как запрос раньше. Обход моей валидации «действительной записи». Другими словами, я бы хотел, чтобы запрос вообще не возвращал ни одной записи и позже обрабатывал ошибку.

Один из обходных путей, о котором я мог подумать, - это поставить одиночный кавычки вокруг моего параметра в namedQuery, например так:

@NamedQuery(name = MyClass.GET_ENTRY_BY_NAME, query = "select e from entry e where e.name =':"+ Entry.NAME "'")

Однако, мой код будет перегружен, если в строке есть одинарные кавычки ...

Есть идеи, ребята?

6
задан axtavt 16 August 2010 в 15:12
поделиться