【发布时间】:2011-03-30 11:49:11
【问题描述】:
大家好,我在执行 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 "'")
但是,如果字符串中包含单引号,它会破坏我的代码...
各位有什么想法吗?
【问题讨论】:
标签: java jpa jpql named-query