如何多次保存同一个对象使用Spring Data?

时间:2017-10-06 09:11:26

标签: java spring-data-jpa

我想多次保存一个对象,下面的代码无效:

for(int i = 0; i < 5; i++) {
    repository.save(object);
}

然后我将源更改为:

List<SomeObject> objectList = new ArrayList<>();
for(int i = 0; i < 5; i++) {
    objectList.add(object);
}
repository.save(object);

但它也无法工作,它只将对象保存一次到数据库。

也许是因为它指向一个实例,但我想知道是否有一种简单的方法可以多次保存对象?

谢谢!

3 个答案:

答案 0 :(得分:1)

它只保存一次对象,因为您每次都使用相同的实例。

因此,当您第一次使用object时,现在它有一个ID,,然后您再次使用对象,但正如我们所说它有一个ID而不是保存它,您的程序在你的数据库中更新

例如,如果你这样做:

for(int i = 0; i < 5; i++) {
    repository.save(new Object());
}

或者如果你有一个对象列表,比如

List<SomeObject> objectList = new ArrayList<>();
for(int i = 0; i < 5; i++) {
    objectList.add(object);
}

你可以这样做:

repository.saveAll(objectList);

现在你在表格中找到了5行

答案 1 :(得分:1)

我不熟悉Spring数据,可能会误解问题,但通常没有必要多次保存同一个对象。

如果在数据库中需要多个实例,则需要显式创建实例的克隆/副本(或左右)并单独保存所有这些实例。

例如,在保存对象的循环中添加创建新实例。

答案 2 :(得分:0)

使用构造函数,您可以多次保存同一对象:

Repository.save(new object(String name,String age));