2016-10-04 161 views
1

我在Oracle SQL Developer中即如何使用hibernate查詢連接表?

1.Test_Employee2
2.Test_Project2
3.Employee_Project2創建三個表。
Employee_Project2Test_Project2Employee_Project2之間的關係爲Many-To-Many的聯繫表。
在休眠我創建兩個休眠類TestEmployeeTestProjectTest_Project2和分別Employee_Project2表,
和表Employee_Project2TestProject休眠類定義如下:

@ManyToMany(cascade = CascadeType.ALL) 
@JoinTable(name = "Employee_Project2", joinColumns = @JoinColumn(name = "proj_id"), inverseJoinColumns = @JoinColumn(name = "emp_id")) 
private Set<TestEmployee> employeesList; 

我填充表Test_Project2Employee_Project2與一些記錄,並且連接表Employee_Project2自動填充了一些記錄。 現在我面對目前的問題是,我想用一個簡單的SELECT語句上使用的Hiberante連接表Employee_Project2如下:

String hql = "FROM Employee_Project2"; 
    Query query = session.createQuery(hql); 
    List results = query.list(); 

    for (Object row : results) { 
     //what to do here 
    } 

我怎麼能做到,儘管連接表「Employee_Project2」不是hibernate類。?

更新

我想檢索休眠表「TestProject」的所有記錄,所以我寫了下面的代碼

String hql = "FROM TestProject"; 
Query query = session.createQuery(hql); 
List results = query.list(); 
System.out.println("results.get(0)" + results.get(0).toString()); 

現在的問題是,在運行時我收到像下面這樣的東西

results.get(0)[email protected] 

我怎樣才能得到包含在每一行的值?

+0

爲什麼要這樣做,您可以選擇所有項目渴望取得,你會得到所有相關的時間如果你有雙向映射,項目也是一樣的 –

+0

@AmerQarabsa請問你提供一個例子 – user2121

+0

那麼mysql和sql-server如何與這個問題相關? – GuidoG

回答

0

你想要做的是創建類型化查詢。有了適當的映射,你可以得到相關的對象,以及 - 無需查詢連接表作爲ORM會爲你做這個:

Query query = session.createQuery(hql); 
List<TestProject> results = query.list(); 

for (TestProject row : results) { 
    //what to do here 
    // do whatever you want 
} 

而且隨着propper關係映射,你可以得到的關係是這樣的:

for (TestProject row : results) { 
    Set<TestEmployee> employees=row.getEmployeesList(); 
    // do more work. 
} 

至於「如何」 - 主題太廣泛,無法在單個答案等內涵蓋,但您應該可以從這裏開始 - http://hibernate.org/orm/documentation/5.1/

+0

但實際上它沒有工作,當我參數化查詢所示在你的答案..它的作品,當它是這樣的:String hql =「FROM TestProject」; \t \t Query query = session.createQuery(hql); \t \t List results = query.list(); – user2121

+0

@ user2121確實,iv從'JPA'中取出它;( – Antoniossss