我在我的ArrayList<Object>
两个记录,但是当我试图插入数据库中的这些记录,只有最后一条记录被保存到数据库中。
我使用Spring数据JPA entityManager.merge()
的方法,因为我有自定义sequenceGenerator用于实体。
summaryList.stream().forEach{(summary -> entityManager.merge(summary)};
在调试我得到summaryList两个记录,但是当我检查我的数据库表,只有一条记录被插入。
Hibernate的第一生成SELECT
声明获取底层数据库记录的最新状态,然后,它会将脱离实体状态到新取的管理实体。这样,脏检查机制可以检测任何状态变化,并将其传播到数据库。
虽然IDENTITY
和SEQUENCE
发电机的策略,您几乎可以使用合并坚持一个实体,用于指定的发电机,这将是效率较低。
实际上,你可以通过添加一个版本属性,你的实体解决此问题。
@Version
private Long version;