2017-04-02 87 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语法。