java - 如何使用hibernate查询两个表(连接表)?

标签 java hibernate hql

我有这些表:cont(id_cont, user, pass) emp(emp_id, 姓名, 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 内连接 emp on cont.id_cont= emp.cont_id_cont where cont.user = 'gbs04405';

最佳答案

这种访问数据的方式并不是 ORM 的目的。如果您使用 Hibernate,您(通常)应该通过对象访问数据。要实现此目的,请在必要时在对象之间定义关系 @OneToMany@ManyToOne 和/或 @ManyToMany,而不是嵌入 SQL 之类的约束.

此外,您应该考虑使用 HQL(或 JPQL)而不是纯 SQL 来实现您想要的效果。

<小时/>

应该是这样的:

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

您可以查看here了解更多 JPQL 语法。

关于java - 如何使用hibernate查询两个表(连接表)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43166319/

相关文章:

hibernate - 使用左连接获取重复

java - 在服务器端创建具有自动完成功能的查询

mysql - 使用 JPA2 + Hibernate + Eclipse 4.2 + MySQL 5.5 从实体生成模式

java - 如何使用 HQL 将 'null' 放入列中?

java - 在java类文件中添加try catch

java - Rest API 中更新方法的 URL,将对象作为查询参数发送给它

java - Java Swing 中具有换行和换行功能的面板

java - Java 中 x,y 的极坐标表示

java - Spring Boot 。复合键和级联

hibernate - 当对象是另一个实体类的属性时使用 HQL 选择对象列表