我有两个域对象,如下面的
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来做到这一点?
答案 0 :(得分:1)
在hql中,您不需要像使用“on”关键字那样在sql中定义连接列。 您已经在映射中定义了连接键,因此hibernate将基于它们进行连接。
所以在你的情况下 从用户u中选择u.emailid,其中u.product.productid =您的产品ID。
有关hql的更多阅读,您还应阅读有关命名查询的信息