2011-05-12 11 views
37

:Joker karakterler tarafından çevrelenen bir JPA adlandırılmış parametresi nasıl belirlenir? Ben böyle bir JPA sorgu belirtmek istiyorum nasıl

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

ardından:

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

ve çok takdir bir

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

tetiklemiyordur!

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

hakkında ben de böyle sorununuzu çözdü eminim nasıl

+0

http://stackoverflow.com/questions/3144235/jpa-hibernate-native-queries-do-not-recognize-parameters – drozzy

+0

'a baktım Yerel bir sorgulama yapmaktan kaçınmaya çalışıyorum. JPA'nın 'LIKE' ve joker karakterleriyle adlandırılmış parametreleri kullanmasının bir şekilde mümkün olabileceğini umarak. –

cevap

60

.

+0

Harika bir cazibe gibi çalışıyor, teşekkürler @musiKk! –

+0

Ham SQL'den JPA'ya geçtiğimde, "geriye doğru düşünürüm" gibi bir şey gibi görünüyor. – fusion27

24

Referans için, aynı zamanda CONCAT kullanabilir:

like CONCAT('%', :someSymbol, '%') 
+0

Bunu paylaştığınız için teşekkür ederiz. Yardımcı olur. +1 – OO7

2

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