2016-10-04 60 views
0

我看過關於EJB的教程,並試圖在我自己的項目中使用它。 如果我嘗試撥打find()函數並按行ID搜索,我會得到我的結果。但是現在我有這個問題,我只是有外鍵搜索。 如果我使用find()並將外鍵作爲參數傳遞,我會得到一個異常。 java.lang.IllegalArgumentException 現在我想知道是否甚至有可能使用find()沒有主鍵的功能,或者我應該創建一個與我的SQL-Query裏面的DAO?通過外鍵找到EJB EJB

回答

2

與其構建DAO,您的項目可能已經利用JPA與實體管理器(本身已經是DAO)的優勢。

如果是這樣的話,我想,還是在一個方便實用類建立一個特定的命名查詢,通過把一個命名查詢你的實體之上:

@Entity 
@NamedQuery(
    name="findMyEntityWithFK", 
    queryString="SELECT e FROM EntityTable e WHERE e.myForeignKey = :myForeignKey") 

,然後你可以簡單地說:

Query queryByFK = em.createNamedQuery("findMyEntityWithFK"); 
queryByFK.setParameter("myForeignKey", "xyz"); 
Collection entities = queryByFK.getResultList();