当前位置: 首页 > 知识库问答 >
问题:

在Hibernate查询语言中使用多对一实现连接两个表

韶景曜
2023-03-14

我有两个域对象,如下所示

使用者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;
    } 
}

产品Java语言

public class Product{

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

在这种情况下,用户到产品具有多对一关系。多个用户可以订阅同一产品。我想通过连接这两个表来查询User表中的用户电子邮件ID,其中productId是产品表中的主键,foriegn键是User表中的foriegn键...如何使用Hibernate查询语言或标准通过连接这两个表来做到这一点?

共有1个答案

施宏大
2023-03-14

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

因此,在您的情况下,请从用户u where u.product中选择u.emailid。productid=您的产品id。

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

 类似资料:
  • 大家好,我在使用jparepository使用@query连接两个表时遇到了一个小问题,但我得到了错误。请帮我做这个。

  • 嗨,我正在尝试使用左外部连接执行hql查询,它是thwhing异常作为org.hibernate.hql.ast.querysyntaxException:意外标记:在第1行附近,可以告诉我这个查询中有什么问题吗 从CreditCardDetails cred左外连接CustomerHistory custHist on cred.creditCardDetailSid=custHist.Cred

  • 我的实体是用户和角色。它们之间存在着多对多的关系。角色的获取在用户中是惰性的。 我想在一个查询中得到用户和规则数据。所以我试着用JPQL得到这些数据。我的用户库是 我记录我的查询与数据源代理,我有两个查询,但我没有离开加入一个查询。为什么不做一个查询? 我的日志是

  • 问题内容: 例如,我有实体: 和实体: 现在,我需要查询所有对象,以便每个对象仅具有介于和之间的那些对象。也就是说,如果有10个具有正确日期的对象,则列表将仅包含那10个对象,仅此而已。可能吗? 提前致谢。 问题答案: 我使用@Filter解决了问题: 并将其应用于会话: 顺便说一句,在使用Hibernate时,应该使用什么查询:它是自己的机制还是“原始” SQL(例如“内部联接”)?

  • 我有以下实体: 在一个查询中完成是可能的?

  • AnsprechPartner Lieferant ansprechpartner.java lieferant.java 在我的AnsprechPartner.java中,我是这样做的: 在我的Lieferanten.java中,我是这样做的: