我在Oracle SQL Developer中创建了三个表,即
1.Test_Employee2
2.Test_Project2
3.Employee_Project2
。
表Employee_Project2
是联接表,Test_Project2
和Employee_Project2
之间的关系为Many-To-Many
。
在hibernate中,我分别为TestEmployee
和TestProject
表创建了两个hibernate类Test_Project2
和Employee_Project2
,
表Employee_Project2
在TestProject
hibernate类中定义如下:
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "Employee_Project2", joinColumns = @JoinColumn(name = "proj_id"), inverseJoinColumns = @JoinColumn(name = "emp_id"))
private Set<TestEmployee> employeesList;
我使用一些记录填充了表Test_Project2
和Employee_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
}
尽管有联接表&#39; Employee_Project2&#39;我怎么能这样做呢?不是一个休眠类。?
更新:
我想检索hibernate表中的所有记录&#34; TestProject&#34;,所以我写了下面的代码
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
如何获取每行中包含的值?
答案 0 :(得分: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.
}
至于&#34;怎么样? - 这个话题太宽泛,无法用单一答案等来涵盖它,但你应该可以从这里开始 - http://hibernate.org/orm/documentation/5.1/