如何使用hibernate查询连接表?

时间:2016-10-04 09:13:20

标签: java oracle hibernate

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

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

@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自动填充了一些记录。 现在我面临的问题是,我想使用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

如何获取每行中包含的值?

1 个答案:

答案 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/

相关问题