1
我只想編寫一個簡單的搜索引擎。NamedQueries Spring使用LIKE%
在我的DAO實現:
@Transactional(readOnly=true)
public List<Thread> findAllWithReferer(String referer) {
Map<String, Object> params = new TreeMap<String, Object>();
log.debug("DAO:findAllWithReferer(String referer) - referer=" + referer);
params.put("referer", "%" + referer + "%");
@SuppressWarnings("unchecked")
List<Thread> threads = EntityManagerUtil.executeNamedQueryInTransaction("Thread.findAllWithReferer", params);
return (threads);
}
utils的類,它提供的方法 'executeNamedQueryInTransaction' 上面:鏈接到我的實體
@SuppressWarnings("rawtypes")
public static List executeNamedQueryInTransaction(String queryName, Map<String, Object> params) {
EntityManager em = createEntityManagerAndOpenTransaction();
Query query = em.createNamedQuery(queryName);
for (String key : params.keySet())
query.setParameter(key, params.get(key));
List l = query.getResultList();
commitTransactionAndCloseEntity(em);
return l;
}
而且Namedquery:
@NamedQueries({
@NamedQuery(name = "Thread.findAllWithReferer", query = "SELECT t FROM Thread t WHERE t.title LIKE :referer")
})
我只是想要將所有記錄與例如字符串'toto'匹配在我的實體山雀中在我的DAO中使用運算符%%。
下面是一些爲例,可以匹配:
TOTO是偉大 Doestotois偉大? dghjgdjtotojdashkjdhk
但它不起作用。只是確切的字符串的作品。 我想確切的說,'executeNamedQueryInTransaction'方法的代碼是正確的,並且完美地工作。我認爲我的問題來自這裏:
params.put("referer", "%" + referer + "%");
有人能幫助我嗎? 在此先感謝您的幫助。
感謝您的幫助。 – user1364743 2013-02-19 13:10:24