在某些情况下,我有一些表处于由我所在的项目维护的架构中。这些表具有对应的映射的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实现。
答案 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;
}