通过非托管Pojo丰富JPA实体

时间:2018-08-28 15:17:09

标签: hibernate jpa

在某些情况下,我有一些表处于由我所在的项目维护的架构中。这些表具有对应的映射的jpa实体。

但是,我希望通过另一个架构中的几个字段来丰富其中一个实体。我虽然可以将自定义sql选择用于此操作,但是我不太清楚如何做到这一点。

丰富的数据仅用于显示目的,不应更新。

我玩过@ Subselect,@ NamedNativeQuery和@Loader,但没有成功。下面是高度简化的代码。

@Entity
@Table(name = "MY_TABLE")
public class MyTableEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "XXX_SEQ_GEN")
    @SequenceGenerator(name = "XXX_SEQ_GEN", sequenceName = "XXX_SEQ", allocationSize = 1)
    private Integer id;

    ... some properties


    private MyPojo myPojo;

    public MyPojo getMyPojo() {
        return myPojo;
    }

    public void setMyPojo(MyPojo myPojo) {
        this.myPojo = myPojo;
    }
}

public class MyPojo {

    private String value;

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

}

休眠是jpa实现。

1 个答案:

答案 0 :(得分:0)

您可以使用@Formula从另一个架构中逐个读取只读字段。

@Formula(value="(SELECT t.extra_data1 FROM other_schema.other_table t WHERE t.id = id)")
@Basic(fetch=FetchType.EAGER)
public Integer getExtraDataColumn1() {
   return this.extraDataColumn1;
}