entityManager.merge(对象)坚持仅从列表的最后一个记录

问题描述 投票:0回答:1

我在我的ArrayList<Object>两个记录,但是当我试图插入数据库中的这些记录,只有最后一条记录被保存到数据库中。

我使用Spring数据JPA entityManager.merge()的方法,因为我有自定义sequenceGenerator用于实体。

summaryList.stream().forEach{(summary -> entityManager.merge(summary)};

在调试我得到summaryList两个记录,但是当我检查我的数据库表,只有一条记录被插入。

jpa java-8 spring-data-jpa entitymanager
1个回答
0
投票

Hibernate的第一生成SELECT声明获取底层数据库记录的最新状态,然后,它会将脱离实体状态到新取的管理实体。这样,脏检查机制可以检测任何状态变化,并将其传播到数据库。

虽然IDENTITYSEQUENCE发电机的策略,您几乎可以使用合并坚持一个实体,用于指定的发电机,这将是效率较低。

实际上,你可以通过添加一个版本属性,你的实体解决此问题。

@Version
private Long version;
© www.soinside.com 2019 - 2024. All rights reserved.