2010-11-17 14 views
2

: dao.query("SELECT p FROM Profile p WHERE p.group = :id ORDER BY p.datestamp :key", map); aşağıdaki hatayı alıyorum:oluşturma sorguları - Ben yöntemini çalıştırdığınızda Sorgu Sözdizimi İstisna

org.hibernate.hql.ast.QuerySyntaxException: unexpected token: : near line 1, column 93 [SELECT p FROM Profile p WHERE p.group = :id ORDER BY p.datestamp :key]

ardından sorgu yöntemi implemenation olduğu; Herkes neyin yanlış olduğunu görüyor mu?

public List<?> query(String criteria, HashMap<String, ?> args) { 
     Query sqlQuery = this.em.createQuery(criteria); 
     Set<String> keys = args.keySet(); 
     Iterator<String> iter = keys.iterator(); 
     while (iter.hasNext()) { 
      String key = iter.next(); 
      sqlQuery.setParameter(key, args.get(key)); 
     } 
     return sqlQuery.getResultList(); 
    } 
+0

Niçin elde etmeye çalışıyorsunuz? Bu kod şimdi tamamen anlamsız görünüyor. – axtavt

+0

@axtavt: Belirli bir grup kimliğine sahip profilleri seçmeye çalışıyorum ve profilleri, ': key' parametresine bağlı olarak,' DESC' veya 'ASC' içindeki tarih damgalarına göre sıralamak istiyorum. – AMS12

cevap

0

Sana ORDER BY p.datestamp sonra virgül ihtiyaç ve :key

+0

Öneriniz için teşekkürler, ancak oldukça işe yaramıyor. Esasen, bunu başarmaya çalışıyorum: 'SELECT p Profil P WHERE p.group =: SİPARİŞ SAYFASI p.datestamp [ASC | DESC]' Burada sipariş, ': key' parametresi ile belirlenir. – AMS12

4

önce parametre sorgusu keyfi yerlerde kullanılamaz çünkü yönünü sıralayacağımız için parametreleri kullanamazsınız düşünüyorum. JPA spec Gönderen:

Input parameters can only be used in the WHERE clause or HAVING clause of a query.

Yani, JPA 1.0 manuel uygun ORDER maddesi ile sorgu dizesi oluşturmak zorunda.

JPA 2.0'da dinamik sorgular oluşturmak için Ölçüt API'sini kullanabilirsiniz.

İlgili konular