2016-10-04 165 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