Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA/Hibernate只加入一个选定列_Java_Database_Spring_Hibernate_Jpa - Fatal编程技术网

Java JPA/Hibernate只加入一个选定列

Java JPA/Hibernate只加入一个选定列,java,database,spring,hibernate,jpa,Java,Database,Spring,Hibernate,Jpa,通过@ManyToOne @ManyToOne @JoinColumns({ @JoinColumn(name = "ID", referencedColumnName = "APPLICATION_ID", insertable = false, updatable = false), @JoinColumn(name = "VERSION", referencedColumnName = "APPLICATION_VERSION

通过
@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
with annotation
@Formula
with value-SQL query只连接一列。

如果要使用join with JPA数据,建议使用JPL查询语言。因此,在您的存储库类中,将其用作注释:

@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;
@Query("select a.name from ApplicationsBodies a join a.applicationId d where d.id = :applicationVersion")

谢谢你的回复。我用稍微不同的方式解决了我的问题。更新记录中指出的决定。