在hibernate查询语言中加入两个表,其中包含多对一的表

时间:2012-09-18 05:01:08

标签: database hibernate join hibernate-mapping

我有两个域对象,如下面的

User.java

Public class User{

     private int userId;

     private String emailId;  

    private Product product; 

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "PRODUCT_ID")
    public Product getProduct() {
        return this.product;
    } 
}

Product.java

public class Product{

    @Id
    @GeneratedValue 
    @Column(name = "PRODUCT_ID", unique = true, nullable = false)
    private productid;
}

在这种情况下,用户与产品之间存在多对一关系。多个用户可以订阅同一产品。我想在User表中使用productId查询用户Email ID,productId是Product表和foriegn中的主键通过连接这两个表来键入User表。如何通过加入这两个表来使用hibernate查询语言或Criteria来做到这一点?

1 个答案:

答案 0 :(得分:1)

在hql中,您不需要像使用“on”关键字那样在sql中定义连接列。 您已经在映射中定义了连接键,因此hibernate将基于它们进行连接。

所以在你的情况下 从用户u中选择u.emailid,其中u.product.productid =您的产品ID。

有关hql的更多阅读,您还应阅读有关命名查询的信息