2011-02-01 64 views
1

嗨, 我有兩個雙向關聯的實體。爲ManyToOne Association編寫HQL查詢

Project.java

class Project{ 

    int project_id; 

    @OneToMany(mappedBy="project") 
    private Set<Users> projectsUsers = new HashSet<Users>(); 

    //getters and setters and other fields 

} 

Users.java

class Users{ 

    int id; 
    int userId; 
    int project_id 

    @ManyToOne(fetch = FetchType.EAGER) 
    @JoinColumn(name="project_id") 
    private Project project; 

    //getters and setters and other fields 

} 

我想寫一個HQL查詢來檢索與特定用戶id相關的項目清單。

我正在寫一些這樣的東西沒有奏效。

from Project P where P.projectsUsers.userId=1 

當試圖執行此我得到一個異常「非法企圖取消引用集合」 可以的,你請人幫我解決這個問題?

由於提前

與問候
Phani庫馬爾

+0

一),請使用HTML和/或'>`引號不要格式化你的代碼。選擇一個代碼塊並使用帶花括號的圖標b)JPA查詢語言是JPQL,而不是HQL。你的問題中的一個標籤是錯誤的,它是哪一個? – 2011-02-01 16:00:20

+0

其實我在Spring-MVC上工作的這部分代碼。所以我認爲我可能會爲這個問題找到更好的解決方法。 – Patton 2011-02-02 05:56:35

回答

3

首先,是沒有意義的,因爲你有一個一對多「與特定用戶id相關的項目列表中的」 /多對一的關係,以便每個用戶可以與不超過一個項目相關聯。

查詢檢索項目如下:

SELECT u.project FROM users u WHERE u.userId = ?