我需要使用JPA存储一个复杂的树状对象结构。
有一个“顶级”类A,因此我可以在其上执行CASCADE. ALL,但我对类B的子对象和HashMap字段有问题。
映射的“键”是对象本身的哈希代码,存储为“值”。
当我级联持久化一个对象B时,数据库中的“键”列总是“null”(为什么?),即使对象有一些键值对。
我尝试了@MapKey之类的方法,但当我稍后从数据库加载对象时,键值不再是hashcode,而是自动生成的id(对我来说没有用处)。
我也尝试过为映射使用@ElementCollection,但随后出现了一个同步错误(我认为这是因为我只从顶级类和一些objectd相互指向对方触发整个persist)。
@Entity
public class B
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@OneToMany(cascade = CascadeType.ALL)
//Tried @MapKey or @ElementCollection
public Map<Integer, OtherEntity> otherEntities;
谢谢你的帮助亚历克斯
@MapKey(name="hashField")
哈希值必须显式存储在其他ntity.hash字段中。映射键用于告诉其他对象属性中的哪个用作键值
主要内容:JPA级联持久化示例,输出结果级联持久化用于指定如果实体持久化,则其所有关联的子实体也将被持久化。 以下语法用于执行级联持久性操作 - JPA级联持久化示例 在这个例子中,我们将创建两个相互关联的实体类,但要建立它们之间的依赖关系,我们将执行级联操作。 这个例子包含以下步骤 - 第1步: 在包下创建一个名为的实体类,其中包含属性:,,以及标记为级联规范的类型的对象。 文件: StudentEntity.java - 第2步:
主要内容:1.AOF日志的影响,2.对AOF重写和RDB的影响,3.总结,4.如何避免大 KeyRedis 的持久化方式有两种:AOF 日志和 RDB 快照。 1.AOF日志的影响 Redis 提供了 3 种 AOF 日志写回硬盘的策略 Always,这个单词的意思是「总是」,所以它的意思是每次写操作命令执行完后,同步将 AOF 日志数据写回硬盘; Everysec,这个单词的意思是「每秒」,所以它的意思是每次写操作命令执行完后,先将命令写入到 AOF 文件的内核缓冲区,然后每隔一秒将缓冲区
谢谢 ----更新----
尝试获取父实体(Msg)的实体,其中父PK (msg_id)是子实体中的FK时,尝试保持子实体(MsgRetry)时出错。 错误,如:org.hibernate.id.IdentifierGenerationException:试图从null一对一属性分配id 父实体,不需要知道子实体(至少我认为它不需要知道)。一旦子实体被持久化,我就会尝试也持久化父实体。我可以通过在子实体中没有父实体并调用关联
问题内容: 我基本上有两个实体和。 包含以下代码: 并包含一些内容,但没有任何意义。我想将一些实例添加到列表中,最重要的是,我想将一些重复项(相同的引用)添加到列表中两次或更多次。我仍然希望JPA坚持两者,并且我希望JPA坚持名单的顺序。 到目前为止,如果我仅添加唯一项,则此方法有效。如果我添加重复项,则JPA实际上想保留正确的数据(ID od1,Entity2的ID和顺序),但是由于关系表的主键
如何在一对多的关系中保持子实体? 创建注册时,如果付款表中的注册列不可为空: 通用域名格式。mysql。jdbc。例外情况。jdbc4.MySQLIntegrityConstraintViolationException:列“registration”不能为null 但如果注册可为null,则会创建付款,但注册列为null: 直到发生异常并执行“HH000010:在批处理发布时,它仍然包含JDBC