2014-01-22 28 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