将外部属性添加到实体,就像它们自己一样

时间:2017-07-31 15:22:04

标签: java spring jpa spring-data

对于一对一关系,是否可以将外表的属性放在@Entity中,就好像它属于@Entity一样?我可以用一个例子来解释自己。

假设我有一张包含大量记录的表foo。其中一些记录可以有一个额外的文本属性bar,但大多数都不会。为了节省空间,我选择将额外的属性放在单独的表bar中。在我的Foo POJO中,我会添加一个类似于:

的属性
@OneToOne
@JoinColumn(name = "fooID")
private Bar bar;

无论我想访问bar对象的foo属性,我都必须写:

foo.getBar().getBar();

这看起来有点傻,特别是在Bar POJO只有一个属性bar的情况下。是否有可能使用一些神奇的注释,比如杰克逊的@JsonUnwrapped,允许我直接在Bar这样的Foo属性?

@OneToOne(...)
@JoinColumn(...)
@MaybeSomeMoreMagicalAnnotations
private String bar;

1 个答案:

答案 0 :(得分:1)

您可以使用Foo类

上的@SecondaryTable注释来执行此操作
@Entity
@Table(name = "foo")
@SecondaryTable(name = "bar")
public class Foo {

    @Column(table = "bar")
    private String bar;

    (everything else)
}