好的,我搜索了很久,似乎找不到一种好的方法来使用JPA/Hibernate和MySQL进行批量插入。
我希望能够使用JPA一次性保存/插入多个记录,但是如果您使用GenerationType.IDENTITY
,则默认情况下禁用了批处理行为。我知道您可以切换到GenerationType.SEQUENCE
,但是这在MySQL上不可用,并且在我的场景中创建新表并使用GenerationType.TABLE
也不是一个选项。
因此,最终,我需要一种使用JPA/Hibernate、MySQL和数据库生成的ID进行批量/大量插入的高效方法。我知道这样做是有效的,因为我可以使用JDBC连接来完成,但是我真的不想为每个存储库编写自己的JDBC查询。
有人知道如何实现这一点吗?
如果无法获取具有ID的更新实体(例如List<User> saveAll()
),那么我可以接受void saveAll()
。我的主要要求是这在一个/两个大查询中发生,而不是像现在调用saveAll
时逐个实体保存。
如果需要更多信息,我可以提供以下实体:
@Entity
@Builder
@Getter
@Setter
@With
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false, exclude = "id")
@Table(name = "user")
@ToString(callSuper = true, onlyExplicitlyIncluded = true)
public class User {
@Id
@ToString.Include
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "uID")
private long id;
private String name;
}