如何在两个表(连接表)上使用hibernate查询?

时间:2017-04-02 08:37:25

标签: java hibernate hql

我有这些表:cont(id_cont,user,pass)                       emp(emp_id,name,cont_id_cont(fk))

@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 cont.id_cont = emp.cont_id_cont中的内连接emp,其中cont.user ='gbs04405';

1 个答案:

答案 0 :(得分: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语法。