首页 > 解决方案 > 在没有 JPQL 的情况下连接两个表

问题描述

我必须以多对一的关系对 MySQL 表 TICKET-是父表和 USER-是子表。

=TICKET=
PK(ID)
summary
message
FK(user_id) references USER(user_id)

=USER=
PK(ID)
email
password

和 JPA 实体

@Entity 
class TICKET {
    @Id
    private Integer ID;
    private String summary;
    private String message;
    @ManyToOne
    @JoinColumn(name="user")
    private USER user;
}

@Entity
class USER {
    @Id
    private Integer ID;
    private String email;
    private String password;
}

如果我通过 ID 进行查询以获取票证,它还将返回不好的用户信息(USER.ID、USER.email、USER.password)。

ticketsCrudRepository.findById(ticketId);

我想要的是得到一个看起来像这样的表:

TICKET.ID | summary | message | USER.email

我知道如何在 MySQL 中做到这一点,但 JPA 对我来说意义重大。我不想使用 JPQL 或本地查询语言。有什么建议么?

标签: javamysqlhibernatejpa

解决方案


我一直在寻找的解决方案是 Spring Data JPA Projections。它们可以是具有与您要从数据库中获取的列相匹配的 getter 的接口或类。有关详细信息,请查看此处的 Spring Framework 文档。


推荐阅读