我在試圖弄清楚如何設置一個有@Embedded
字段的類的時候遇到了一些麻煩,這個字段必須被懶惰地讀取。我嘗試使用@Basic(fetch = FetchType.LAZY)
註釋該字段,但它會導致持久性API將該字段視爲實現Serializable
的基本類型,因此它將該字段映射到數據庫(postgresql)中的BYTEA
字段。我也在Derby上進行了測試,結果也是如此。有沒有一種方法來獲取@Embedded領域懶惰?
我也試着註釋@Embeddable
類的字段與@Basic(fetch = FetchType.LAZY)
轉爲單獨標註有它的實體的@Embedded
領域。在這種情況下生成的模式是正確的,但是當我加載實體的實例時,這些字段會被熱切地提取出來。
我的理解是,@Basic
註釋僅用於基本字段/屬性,因此第一種情況是預期的。但是爲什麼@Embeddable
課程的字段即使被註釋爲@Basic(fetch = FetchType.LAZY)
,也會被熱切地獲取?另外,我知道提取策略可以通過@Basic
和關係註釋來指定,但是還有其他方法可以指定應該延遲提取哪些字段?我使用EclipseLink 2.6,但是讓我知道其他版本的EclipseLink或其他提供者的行爲是否不同。