2015-05-19 58 views
0

我已創建了標準的API,通過環環相扣實體獲取一個實體的查詢加入。但如何重寫這個通過userId(Long)來查找實體? 用戶的元模型具有User_.id(SingularAttribute)。JPA通過ID不是實體

用戶也是一個實體。而一個「用戶項目」只有一個用戶和一個項目。

+0

添加一個交叉連接,然後使用WHERE子句涉及兩個實體的任何屬性,它們的共同點 –

+1

是'User'實體? 'UserProjects'和'User'之間有哪些關係? – perissf

+0

@NEIL如何 - 你可以請代碼顯示嗎? – dermoritz

回答

1

再添加一個加入UserProjectsUser之間子句:

Join<Booking, UsersProjects> userProjectsJoin = booking.join(Booking_.userProject, JoinType.INNER); 
Join<UsersProjects, User> userJoin = userProjectsJoin.join(UserProjects_.user); 
createQuery.where(cb.equal(userJoin.get(User_.id), userId)); 
+0

我試過看到我編輯的問題 - 它不工作?!你能檢查我是否正確嗎? – dermoritz

+1

顯示這些關係,正如我在對您的問題的評論中所提到的那樣,如果它不起作用,請說明它的含義:您是否收到錯誤?哪個錯誤?或者你得到的結果集與預期的不同?如果是,請記錄生成的查詢併發布。順便說一下,除了使用變量'projectId'而不是'userId'之外,你的代碼看起來是正確的。 – perissf

+0

你救了我的一天 - 問題確實在擺弄userId/projectId :-P。 – dermoritz