Spring boot 如果spring boot hibernate中的saveAll()发生冲突

Spring boot 如果spring boot hibernate中的saveAll()发生冲突,spring-boot,hibernate,jpa,Spring Boot,Hibernate,Jpa,我目前正在开发Spring Boot Hibernate 我需要在mySql数据库中保存一个对象列表, 我读到了使用saveAll()和foreach save()保存的区别,我可以得出结论,saveAll()要快得多。但是,如果发生异常(例如UK违例),整个过程将回滚,并且不会保存任何对象 更简单一点:我想在一个事务中保存一个对象列表,如果有任何约束冲突,忽略它并保存其余的 这是我的实体: package com.entity; import org.hibernate.annotation

我目前正在开发Spring Boot Hibernate

我需要在mySql数据库中保存一个对象列表, 我读到了使用saveAll()和foreach save()保存的区别,我可以得出结论,saveAll()要快得多。但是,如果发生异常(例如UK违例),整个过程将回滚,并且不会保存任何对象

更简单一点:我想在一个事务中保存一个对象列表,如果有任何约束冲突,忽略它并保存其余的

这是我的实体:

package com.entity;

import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;
import org.springframework.transaction.annotation.Transactional;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
@Transactional
public class Page {

@Id
@GeneratedValue(generator = "page_sequence-generator")
@GenericGenerator(
        name = "page_sequence-generator",
        strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
        parameters = {
                @Parameter(name = "sequence_name", value = "page_sequence"),
                @Parameter(name = "initial_value", value = "1"),
                @Parameter(name = "increment_size", value = "1")
        }
)
private long id;

@Column(nullable = false, unique = true)
private String url;

private boolean isPageConsumed;

public Page() {
}

public Page(String url, boolean isPageConsumed) {
    this.url = url;
    this.isPageConsumed = isPageConsumed;
}

public long getId() {
    return id;
}

public void setId(long id) {
    this.id = id;
}

public String getUrl() {
    return url;
}

public void setUrl(String url) {
    this.url = url;
}

public boolean isPageConsumed() {
    return isPageConsumed;
}

public void setPageConsumed(boolean pageConsumed) {
    isPageConsumed = pageConsumed;
}

@Override
public String toString() {
    return "Page{" +
            "id=" + id +
            ", url='" + url + '\'' +
            ", isPageConsumed=" + isPageConsumed +
            '}';
}
}
这是我的存储库:

@Repository
public interface PageRepository extends CrudRepository<Page, String> {

@Query(value = "SELECT p FROM Page p where p.isPageConsumed = '0'")
public Page findFirstPage();

}
@存储库
公共接口页面存储库扩展了Crudepository{
@查询(value=“从p页中选择p,其中p.isPageConsumed='0')
公共页面findFirstPage();
}
谢谢:)

您可以在调用
saveAll()
的控制器方法上使用Spring