単純な検索エンジンをコーディングしたいだけです。
私の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);
}
上記のメソッド'executeNamedQueryInTransaction'を提供するUtilsクラス:
@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")
})
たとえば、DAOで演算子%%を使用して、エンティティタイトルフィールドの文字列'toto'とすべてのレコードを一致させたいだけです。
一致する可能性のあるいくつかの例を次に示します。
トトは素晴らしいですドストトは素晴らしいですか?dghjgdjtotojdashkjdhk
しかし、それは機能しません。正確な文字列だけが機能します。'executeNamedQueryInTransaction'メソッドへのコードが正しく、完全に機能することを正確に示したいと思います。私の問題はここから来ていると思います:
params.put("referer", "%" + referer + "%");
誰か助けてくれませんか?よろしくお願いします。