2017-04-02 109 views
0

我有這些表:繼續(id_cont,user和pass) EMP(EMP_ID,名稱,cont_id_cont(FK))如何在兩個表(連接表)上使用hibernate查詢?

@Entity 
@Table(name = "emp", catalog = "", uniqueConstraints = { 
     @UniqueConstraint(columnNames = "cont_id_cont") }) 
public class Emp implements java.io.Serializable{ 
    private int id_emp; 
    private ContUser contUser; 
    private String name; 

@Entity 
@Table(name = "cont", catalog = "", uniqueConstraints = { 
     @UniqueConstraint(columnNames = "pass") }) 
public class Cont implements java.io.Serializable{ 

    private int id_cont; 
    private String user; 
    private String pass; 
private Set<Emp> empForCont = new HashSet<Emp>(0); 
} 

現在:我想此查詢: 從cont 中選擇cont.user,emp.name,emp.cont_id_cont內聯接emp emp cont.id_cont = emp.cont_id_cont其中cont.user ='gbs04405';

+0

查詢的錯誤是什麼?你的查詢看起來很好。 –

+0

@Taylor您可以創建createQuery對象,然後您可以正確簡單地連接查詢並從這些連接表中獲取相關值 –

回答

1

這種訪問數據的方式不是ORM的目的。如果您使用Hibernate,則應該(通常)通過對象訪問數據。爲了做到這一點,不是像約束那樣嵌入SQL,而是在必要時在對象之間定義關係@OneToMany@ManyToOne和/或@ManyToMany

另外,您應該考慮使用HQL(或JPQL)而不是純粹的SQL來實現您想要的。


應該是這樣的:

SELECT e FROM Emp e JOIN e.contUser u WHERE u.user = :userstring 

您可以檢查here進一步JPQL語法。