2016-12-16 56 views
3

我有两个表格:session_startsession_endsession_start在Hibernate中选择加入查询语言

列是

session_id 
user_id 

session_end表的列是

session_end_id 
session_id 
session_met 

现在从user_id,我想所有的session_metuser。什么可以是它的Hibernate查询?

回答

0

我们需要您的hibernate映射为它创建一个HQL。否则,这将是普通的SQL这样的:

select e.session_met 
     from session_start s 
     join session_end e on s.session_id = e.session_id 
where s.user_id = ? 

为HQL你需要加入的财产,就像

join s.property to session_end on session_start object 
1
class SessionStart { 

    @Id 
    @GeneratedValue 
    @Column 
    private pid; 

    @ManyToOne(fetch = FetchType.LAZY) 
    private User user; 

} 

class SessionEnd { 

    @Id 
    @GeneratedValue 
    @Column 
    private pid; 

    @OneToOne(fetch = FetchType.LAZY) 
    private SessionStart start; 

    @Column 
    private String met; 

} 

HQL

select end.met 
    from SessionEnd end inner join SessionStart start 
    where start.user.pid = :userPid 

不过还好,在我看来,当然,要有一个会议开始和结束的表格。

class Session { 

    @Id 
    @GeneratedValue 
    @Column 
    private pid; 

    @ManyToOne(fetch = FetchType.LAZY) 
    private User user; 

    @Column 
    private String met; 

}