2011-11-02 43 views
0
@JoinColumn(name = "want_uid", referencedColumnName = "id") 
    @ManyToOne 
    private BookUsers wantUid; 
    @JoinColumn(name = "sale_uid", referencedColumnName = "id") 
    @ManyToOne 
    private BookUsers saleUid; 
    @JoinColumn(name = "book_id", referencedColumnName = "id") 

這個代碼是從實體bean 和我寫使用want_uid作爲queryparam。作爲fllows查詢:JPA2:我使用的是JoinColumn作爲queryparam創建查詢和異常發生,爲什麼

BookUsers bookUsers=userDA.findUserByID(wantID); 
Query query= em.createQuery("SELECT b FROM BookOrder b WHERE b.want_uid = :want_uid"); 
query.setParameter("want_uid", bookUsers); 

一個異常:

javax.servlet.ServletException: java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager: 
Exception Description: Error compiling the query [SELECT b FROM BookOrder b WHERE b.want_uid = :want_uid], line 1, column 34: unknown state or association field [want_uid] of class [com.xbook.entities.BookOrder]. 

我沒有找到原因... 你能告訴我嗎? 感謝

+0

你有沒有試着用'query.setParameter( 「want_uid」,bookUsers .getId());'? – legendofawesomeness

回答

2

在查詢

b.want_uid 

需要改變,以

b.wantUid 

所以,

SELECT b FROM BookOrder b WHERE b.wantUid = :want_uid 
+0

哇...謝謝!問題很奇怪... JoinColumn的名字是want_uid ..爲什麼不是這個作爲queryparam? – user996505

相關問題