2014-01-22 19 views
0

考慮下面的類結構:節約實體類的序列化領域

@Entity 
public class A {} 

@Entity 
public class B {} 

public class SubA extends A 
{ 
    private B b; 
} 

我想堅持一個SubA實例數據庫,但JPA被檢測到成員b是一個實體,並要求我(@OneToOne(cascade = CascadeType.PERSIST))。

我想將會員b視爲簡單的序列化字段而不是實體,即保存實例的「快照」而不是對B的相應記錄的引用。

我當然可以將我自己的B的實例序列化並將其保存爲字節數組,例如,但我希望有一個更優雅的內置JPA解決方案。

回答

0

也許你可以將SubA實例序列化爲例如JSON並作爲文本存儲在數據庫中,並將其解析回對象。 如果您使用EclipseLink,則可以爲此實現轉換器類,並且該過程將自動進行。 http://eclipse.org/eclipselink/documentation/2.4/jpa/extensions/a_converter.htm

在JPA 2.1提供程序中,有標準註釋/接口用於此目的。

+0

FWIW AttributeConverters自JPA 2.1以來一直是標準的。任何JPA 2.1實現提供那些 – DataNucleus

+0

@DataNucleus感謝您的信息,更正! – gyorgyabraham