Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将对象实例存储为EJB3实体的字段?_Java_Orm_Jpa - Fatal编程技术网

Java 如何将对象实例存储为EJB3实体的字段?

Java 如何将对象实例存储为EJB3实体的字段?,java,orm,jpa,Java,Orm,Jpa,我有一个实体升级,它有3个简单的字段id、name、description,所有3个字段都将映射到DB。到现在为止,一直都还不错。问题在于第四个字段ruleModel,它是ruleModel的一个实例,在运行时构建时,它将包含十几个其他类的对象实例。我不想将RuleModel映射到DB表,因为这是一项额外的工作,也是不必要的。我只想将ruleModel对象实例存储到DB中,然后能够从DB加载ruleModel并在内存中恢复对象实例 代码: }如果让规则模型类实现可序列化接口,则应该能够向升级类添

我有一个实体升级,它有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;