2009-02-10 78 views
1

我有一个实体促销,其中有3个简单的字段(ID,名称,描述),所有3将被映射到数据库。到现在为止还挺好。问题在于第4个字段ruleModel,它是RuleModel的一个实例,在运行时构建时,它将包含十几个其他类的对象实例。我不想将RuleModel映射到数据库表,因为这是很多额外的工作,也是不必要的。我只想将ruleModel对象实例存储到DB中,然后能够从DB加载ruleModel并在内存中恢复对象实例。如何将对象实例存储为EJB3实体的字段?

代码:

@Entity 
public class Promotion { 
    @Id 
    @GeneratedValue 
    private Long id; 

    private String name; 
    private String description; 

    private RuleModel ruleModel; 

}

回答

0

如果您的规则模型类实现可序列化接口,那么你应该能够到RuleModel变量添加到您的促销类。 这需要在Promotion表中添加一个新列。 当您坚持Promotion类时,RuleModel类实例的seraralized实例将存储在新列中。

0

如果我理解正确的,你想序列化RuleModel实例 - 其中包含了许多其他实例的引用 - 当你反序列化,你会接受所有引用ruleModel此前举行的会丢失。如果这是你的目标,你需要做两件事情:

  1. 标志中的任何字段RuleModel具有瞬态是
  2. 注释RuleModel与JPA @Embeddable注释
  3. 的注解ruleModel促进@Embedded

虽然这不会对ruleModel情况持续到一列,它会持续的情况下成促进使用同一个表的多个列。它也将按照您的意愿重新实施ruleModel

相关问题