2011-04-06 52 views

回答

0

您的選擇看起來像是一個jpql查詢,所以當它直接作爲本機查詢傳遞到數據庫時它不起作用。您可以改用createQuery方法。更好的辦法是使用在你的實體上聲明的命名參數化查詢,如下所示:

@Entity 
@NamedQueries({@NamedQuery(name="MyEntity.findById", query="select o from MyEntity o where o.IDfield = :id"}) 
public class MyEntity { 
    @Id 
    private String IDfield; 
} 

... 

MyEntity entity = (MyEntity)em.createNamedQuery("MyEntity.findById").setParameter("id", "938").getSingleResult(); 
+0

非常感謝,createQuery的作品。 – 2011-04-07 09:27:15

+0

也謝謝,我不知道如何在指定的查詢中設置參數。 它使用namedQuery優先是隻是一個整潔和可重用性? – 2011-04-07 09:33:33

+0

Jan Gvdp:命名查詢的另一個原因是他們在部署時檢查語法,因此您可能更容易發現拼寫錯誤。此外,應該有一個小的性能改進,因爲查詢只能轉換爲SQL一次。 – 2011-04-07 11:15:32