java - JPA/Hibernate 仅加入选定的一列

标签 java database spring hibernate jpa

通过@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;

我加入另一张 table 。

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

@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 查询仅连接一列。

最佳答案

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

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

关于java - JPA/Hibernate 仅加入选定的一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59213436/

相关文章:

java - Java 中通过引用连接数组

java - 读写文件 - Java 空空间

java - COM怎么可能是有理数呢?

mysql - 在查询中使用 Where 子句

php - 一种编写 INSERT INTO 表 VALUES (value1, value2, ...valueN) 的简单方法

java - JPA/Hibernate - 复合主键与外键

java - Eclipselink 异常 : Isolated Data is not currently supported

sql - 简单表设计的最佳 sql 查询

spring - JpaRepository : No Transaction in progress

angularjs - 无法理解 JWT 和 Java (Spring Boot)。这个应用程序安全吗?