【发布时间】:2021-01-09 10:02:58
【问题描述】:
拥有这些课程:
public class SomeCompositeKey implements Serializable {
private Long objectAId;
private Long objectBId;
private Long objectCId;
}
//lombok annotations~~
@Entity
@Table(name = "objects_assoc")
@IdClass(SomeCompositeKey.class)
public class ObjectsAssocEntity {
@Id
@ManyToOne
@JoinColumn(name = "object_a_id")
private ObjectAEntity objectA;
@Id
@ManyToOne
@JoinColumn(name = "object_b_id")
private ObjectBEntity objectB;
@Id
@ManyToOne
@JoinColumn(name = "object_c_id")
private ObjectCEntity objectC;
}
我正在使用EntityManager.getReference() 获取ObjectsAssocEntity 成员的引用并尝试使用saveAll 方法一次保存几个实体,并且每次休眠执行选择以检查实体是否存在,然后进行单个插入不存在的情况。
在这种情况下是否有可能使用批量插入?还是我应该尝试这样做,例如使用本机查询?
【问题讨论】:
-
你用的是什么hibernate方言,hibernate版本?
-
方言:SQLServer2012方言,休眠版本:5.4.15
-
批量插入与之前选中的语句无关。您可以通过分析选择后的插入操作来检查它。添加属性 spring.jpa.properties.hibernate.generate_statistics = true 并分析插入日志以确认批处理已执行。关于批量插入之前执行的选择,我面临同样的问题,就像你一样。一旦我有解决方案或理解。我会给你答案!
标签: java hibernate jpa spring-data-jpa