web-dev-qa-db-ja.com

ワイルドカードで囲まれたJPA名前付きパラメーターを指定する方法は?

次のようなJPAクエリをどのように指定しますか?

Query q = 
  em.createQuery(
    "SELECT x FROM org.SomeTable x WHERE x.someString LIKE '%:someSymbol%'"
  );

に続く:

q.setParameter("someSymbol", "someSubstring");

トリガーしない

org.hibernate.QueryParameterException: could not locate named parameter [id]

大変感謝いたします!

45

どう?

Query q = 
  em.createQuery(
    "SELECT x FROM org.SomeTable x WHERE x.someString LIKE :someSymbol"
);
q.setParameter("someSymbol", "%someSubstring%");

私は一度あなたの問題をそのように解決したと確信しています。

74
musiKk

参考のために、CONCATを使用することもできます。

like CONCAT('%', :someSymbol, '%')
38
xtian

query.setParameter(someSymbol、 "%" + someSymbol + "%");

4
Chinmoy