【发布时间】:2019-07-03 12:07:20
【问题描述】:
我的ArrayList<Object> 中有两条记录,但是当我尝试将这些记录插入数据库时,只有最后一条记录会保存到数据库中。
我正在使用 Spring data JPA entityManager.merge() 方法,因为我有自定义序列生成器用于实体。
summaryList.stream().forEach{(summary -> entityManager.merge(summary)};
在调试时,我在 summaryList 中获得了两条记录,但是当我检查我的数据库表时,只插入了一条记录。
【问题讨论】:
-
您之前检查过您的自定义生成器吗?似乎它两次返回相同的值。
-
@amseager:我没有得到。您能否详细说明一下,因为我之前能够在数据库中获得正确的值。自定义生成器仅用于从常见序列之一生成 ID。
-
既然您不发布实体,那么您期待什么?您也没有提及事务边界在哪里,或者在调用合并时要持久化的对象处于什么生命周期状态。
-
@BillyFrost:代码如下所示: public void saveTable(List
summary) { summary.stream().forEach(sum -> entityManager.merge(sum)); } 其中摘要是我的实体。 -
实体如下:@Id @GeneratedValue(generator = "SUM_ID_SEQ") @GenericGenerator(name = "SUM_ID_SEQ", strategy = "com.sbc.test.SummarySequenceIdGenerator") @Column(name = " SUM_ID",可插入 = 真,可更新 = 真,唯一 = 真,可空 = 假)私有 BigInteger mbrshpLdgrSumId; @Column(name = "Name", nullable = false) 私有字符串名称;
标签: jpa java-8 spring-data-jpa entitymanager