ArrayList<Object>
中有两条记录,但是当我尝试将这些记录插入数据库时,只有最后一条记录被保存到数据库中。
我使用Spring数据JPA entityManager.merge()
方法,因为我有用于实体的自定义sequenceGenerator。
summaryList.stream().forEach{(summary -> entityManager.merge(summary)};
在调试时,我在summaryList中得到了两条记录,但是当我检查数据库表时,只插入了一条记录。
答案 0 :(得分:0)
Hibernate首先生成SELECT
语句以获取基础数据库记录的最新状态,然后将分离的实体状态复制到新获取的管理实体上。这样,脏检查机制可以检测任何状态更改并将其传播到数据库。
在使用IDENTITY
和SEQUENCE
生成器策略时,实际上可以使用merge来保留实体,对于分配的生成器来说,效率会较低。
实际上,您可以通过向实体添加版本属性来解决此问题。
@Version
private Long version;