2017-07-31 24 views
1

對於一對一關係,是否可以將外部表的屬性置於@Entity中,就好像它屬於那個@Entity?我可以用一個例子來解釋自己。將外部屬性添加到實體,就好像它們自己一樣

比方說,我有一個表foo與大量的記錄。其中一些記錄可以有一個額外的文本屬性bar,但其中大多數不會。爲了節省空間,我會選擇將該額外的房產放在單獨的表bar中。在我Foo POJO,我會再加入,看起來像一個屬性:

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

無論我想訪問我的foo對象的bar財產,我不得不寫:

foo.getBar().getBar(); 

這看起來有點愚蠢,特別是在Bar POJO只有一個屬性bar的情況下。是否有可能使用一些神奇的註釋,如傑克遜的@JsonUnwrapped,允許我但Bar的屬性直接在Foo像這樣?

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

不知道我理解的@SecondaryTable註解做到這一點。 Java方法允許你抽象他們返回你想要的東西。方法String getBar(){return(bar == null?)null:bar.getBar();} – Chris

+0

當然,但只是將問題移到我的POJO。外面很乾淨,我喜歡,但我想知道是否有最佳的解決方案。 – delucasvb

回答

1

你可以使用你的Foo類

@Entity 
@Table(name = "foo") 
@SecondaryTable(name = "bar") 
public class Foo { 

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

    (everything else) 
} 
相關問題