【问题标题】:JPA/Hibernate Join only one selected columnJPA/Hibernate 只加入一个选定的列
【发布时间】:2019-12-06 12:45:15
【问题描述】:

通过@ManyToOne到现有表

    @ManyToOne
    @JoinColumns({
            @JoinColumn(name = "ID", referencedColumnName = "APPLICATION_ID", insertable = false, updatable = false),
            @JoinColumn(name = "VERSION", referencedColumnName = "APPLICATION_VERSION", insertable = false, updatable = false)
    })
    private ApplicationsBodies applicationsBodies;

我加入另一张桌子。

但是从连接表中,我只想连接一列。

@Entity
@Table
public class ApplicationsBodies implements Serializable {

... 

@Column(name = "APPLICATION_ID")
private Long applicationId;

@Column(name = "APPLICATION_VERSION")
private Long applicationVersion;

//I want to attach only this column
@Lob
@Column(name = "BODY")
private String body;

@Column(name = "ACTIVE_STATE")
private Integer activeState;

如何使用 JPA / Hibernate 来实现?

更新:解决方案

@Formula 注释解决了我的问题。因为当我仅出于加载这一字段的目的引用一个实体时,对我来说它已成为最佳解决方案。

我删除了该字段:private ApplicationsBodies applicationsBodies。并创建了一个字段:private String body 带注释 @Formula 带值 - SQL 查询仅连接一列。

【问题讨论】:

    标签: java database spring hibernate jpa


    【解决方案1】:

    如果您想对 JPA 数据使用联接,那么我建议使用 JPL 查询语言。因此,在您的存储库类中用作注释:

    @Query("select a.name from ApplicationsBodies a join a.applicationId d where d.id = :applicationVersion")
    

    【讨论】:

    • 感谢您的回复。我以稍微不同的方式解决了我的问题。更新记录中指示的决定。
    猜你喜欢
    • 2010-09-20
    • 2016-07-07
    • 2016-12-20
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多