如何使用hibernate查询连接表?

我在Oracle SQL Developer中创建了三个表

1.Test_Employee2
2.Test_Project2
3.Employee_Project2
Employee_Project2是连接表,因为Test_Project2Employee_Project2之间的关系是Many-To-Many
在hibernate中,我分别为Test_Project2Employee_Project2表创建了两个hibernate类TestEmployeeTestProject
Employee_Project2表在TestProject hibernate类中定义如下:

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

我用一些记录填充了表Test_Project2Employee_Project2 ,并且连接表Employee_Project2自动填充了一些记录。 现在我面临的问题是,我想在使用hiberante的连接表Employee_Project2上使用一个简单的select语句,如下所示:

 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类,但我怎么能这样做呢?

更新

我想检索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)msc.hibernate.persistence.TestProject@12ec9534 

我怎样才能得到每一行中包含的值?

您要做的是创建类型化查询。 通过适当的映射,您也可以获得相关对象 – 无需查询连接表,因为ORM将为您执行此操作:

 Query query = session.createQuery(hql); List results = query.list(); for (TestProject row : results) { //what to do here // do whatever you want } 

通过propper关系映射,您可以获得如下关系:

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

至于“如何” – 主题太宽泛,无法用单一答案等来涵盖它,但你应该可以从这里开始 – http://hibernate.org/orm/documentation/5.1/