2010-11-26 70 views
2

我相對比較新,EclipseLink的世界裏,我一直在閱讀文檔,但是我有一個真正的問題,試圖代表下表。如何爲以下內容定義EclipseLink註釋?

PTY_NO | REF_OBG 
6544  45663 
6544  1234 
6544  97543 
6544  1123 
6544  77897 

理想情況下,我想代表上述數據如下。

@Entity 
@Table(name="FCS_ISSR_OBG") 
public class fcs_issr_obg implements Serializable { 

    @Id 
    @Column(name="PTY_NO") 
    private long pty_no; 

    @Column(name="REF_OBG") 
    private List<long> ref_obg; 

... 

因爲一旦我有了這種形式的數據,我計劃將這個類序列化到一個Coherence緩存中。

但是我用不實際編譯註釋...

任何幫助將受到歡迎。

..更新

我已經設法想出迄今最好的是

@Entity 
@Table(name="FCS_ISSR_OBG") 
public class fcs_issr_obg implements Serializable, PortableObject { 

    private static final long serialVersionUID = 1L; 

    @Id 
    @Column(name="PTY_NO") 
    private long pty_no; 

    @ElementCollection(targetClass = Long.class, fetch = EAGER) 
    @CollectionTable(
      name = "FCS_ISSR_OBG", 
      [email protected](name="PTY_NO") 
      ) 
    @Column(name ="REF_OBG") 
    private List<Long> collection; 

然而,這導致2個查詢......這是不是真的我後。

乾杯 豐富

+0

這是一個許多一對多連接表? – 2010-11-26 11:56:03

+0

這是一張表,沒有主鍵。所以表內的映射是一對多的。 – Rich 2010-11-26 12:00:01

+0

好吧,我來看看... – 2010-11-26 12:19:12

回答

2

要強制使用父查詢獲取任何關係,可以在EclipseLink中使用@JoinFetch註釋。

儘管在單獨的查詢中讀取集合可能是取決於數據的最佳解決方案。您還可以在EclipseLink中使用@BatchFetch批量獲取關係(仍然有2個查詢,但不是n + 1個查詢)。我做了一批比較,並加入在我的博客最近,見取,

http://java-persistence-performance.blogspot.com/

2

我已經無法對此進行測試,但也許引入嵌入對象可以減少查詢次數。事情是這樣的:

@Entity 
@Table(name = "FCS_ISSR_OBG") 
public class FCS_ISSR_OBGDto implements Serializable { 

    @Column(name = "PTY_NO", nullable = false) 
    private Long pty_no; 

    private List<REF_OBGDto> REF_OBGs = new ArrayList<REF_OBGDto>(); 

    @ElementCollection 
    @CollectionTable(name = "FCS_ISSR_OBG", joinColumns = @JoinColumn(name = "PTY_NO")) 
    @Column(name = "REF_OBG") 
    public List<REF_OBGDto> getREF_OBGs() { 
    return REF_OBGs; 
    } 
} 

與嵌入式看起來像這樣

@Embeddable 
@Table(name = "FCS_ISSR_OBG") 
public class REF_OBGDto { 

    @Column(name = "REF_OBG") 
    public Long ref_obg; 

} 

你只有當你特別要求它集合。對不起,答案很弱,但我只限於我可以在這裏測試的內容。