2016-12-16 3 views
3

У меня есть две таблицы: session_start и session_end.Выберите в спящем режиме Язык запроса с присоединением

Колонна session_start таблицы

session_id 
user_id 

Колонны session_end таблицы

session_end_id 
session_id 
session_met 

Теперь из user_id, я хочу, чтобы получить все session_met для user. Какой может быть запрос на спящий режим?

ответ

0

Нам нужны ваши сопоставления спящего режима, чтобы создать для него 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; 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^