Как определить нарушенную сущность при сохранении партии в данных пружины - PullRequest
0 голосов
/ 18 декабря 2018

У меня следующая проблема

public void batchSave(List<Entity> entities) {
        repositoryJpa.save(entities);
 }

Если список сущностей содержит уже сохраненную сущность, я получил DataIntegrityViolationException.

Есть ли способ узнать, какая сущность нарушена, сохраняется?Исследуя исходный код данных Spring и DataIntegrityViolationException, я мог найти любое место, где может храниться неправильная сущность.

UPD

public class Entity {


@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "GENERATOR")
@Column(name = "ID", unique = true, nullable = false)
public Long getId() {
    return id;
}

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "NTRY_TABS_TABH_ID", nullable = false)
public OtherEntity getOtherEntity() {
    return otherEntity;
}

@Column(name = "SORT_KEY", nullable = false)
public String getSortKey() {
    return sortKey;
}

@Enumerated(EnumType.STRING)
@Column(name = "TYPE", nullable = false)
public OperationType getOperationType() {
    return operationType;
}

@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "activeEntryEntity")
public SortKeyEntity getSortKeyEntity() {
    return sortKeyEntity;
}

@Version
@Column(name = "VERSION", nullable = false, insertable = false)
public Long getVersion() {
    return version;
}

}

1 Ответ

0 голосов
/ 18 декабря 2018

Используйте проверку javax, и вы сможете сделать что-то вроде этого:

import javax.validation.constraints.AssertTrue;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.validation.constraints.Email;

public class User {

    @NotNull(message = "Name cannot be null")
    private String name;

    @AssertTrue
    private boolean working;

    @Size(min = 10, max = 200, message 
      = "About Me must be between 10 and 200 characters")
    private String aboutMe;

    @Min(value = 18, message = "Age should not be less than 18")
    @Max(value = 150, message = "Age should not be greater than 150")
    private int age;

    @Email(message = "Email should be valid")
    private String email;

    // standard setters and getters 
}

И затем вы можете проверить это следующим образом:

Set<ConstraintViolation<User>> violations = validator.validate(user);

Посмотрите на это:https://www.baeldung.com/javax-validation

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...