2016-12-16 26 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; 

}