Java 如何将对象实例存储为EJB3实体的字段?
我有一个实体升级,它有3个简单的字段id、name、description,所有3个字段都将映射到DB。到现在为止,一直都还不错。问题在于第四个字段ruleModel,它是ruleModel的一个实例,在运行时构建时,它将包含十几个其他类的对象实例。我不想将RuleModel映射到DB表,因为这是一项额外的工作,也是不必要的。我只想将ruleModel对象实例存储到DB中,然后能够从DB加载ruleModel并在内存中恢复对象实例 代码:Java 如何将对象实例存储为EJB3实体的字段?,java,orm,jpa,Java,Orm,Jpa,我有一个实体升级,它有3个简单的字段id、name、description,所有3个字段都将映射到DB。到现在为止,一直都还不错。问题在于第四个字段ruleModel,它是ruleModel的一个实例,在运行时构建时,它将包含十几个其他类的对象实例。我不想将RuleModel映射到DB表,因为这是一项额外的工作,也是不必要的。我只想将ruleModel对象实例存储到DB中,然后能够从DB加载ruleModel并在内存中恢复对象实例 代码: }如果让规则模型类实现可序列化接口,则应该能够向升级类添
}如果让规则模型类实现可序列化接口,则应该能够向升级类添加一个RuleModel变量。 这需要在升级表中添加一个新列。
当您持久化升级类时,RuleModel类实例的Serarized实例将存储在新列中。如果我理解正确,您正在尝试序列化RuleModel实例(其中包含对许多其他实例的引用),当您对其进行反序列化时,您会接受以前保存的所有引用RuleModel都将丢失。如果这是你的目标,你需要做两件事: 将RuleModel中的任何字段标记为 用JPA@embeddeble注释注释RuleModel 用@Embedded注释升级中的ruleModel字段 虽然这不会将ruleModel实例持久化到单个列中,但会将实例持久化到升级使用的同一表的多个列中。它还将根据您的需要重新验证规则模型
@Entity
public class Promotion {
@Id
@GeneratedValue
private Long id;
private String name;
private String description;
private RuleModel ruleModel;