Хранилище данных Spring не проверяет isNew (сущность) для классов, помеченных как каскадные под основной сущностью - PullRequest
0 голосов
/ 04 июня 2018

У меня есть родительский класс (для простоты понимания и работы на ваших локальных компьютерах я упростил структуру класса)

@Entity
@Table(name = "entity_a")
public class EntityA implements Serializable, Persistable<Integer> {

    @Id
    @Column(name = "id")
    private Integer id;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "entity_b_id")
    private EntityB entityB;

    /* Getter and Setter */

    @Override
    public boolean isNew() {
        return isNew;
    }
}

@Entity
@Table(name = "entity_b")
public class EntityB implements Serializable, Persistable<String> {

    @Id
    @Column(name = "id")
    private String id;

    @Column(name = "name")
    private String name;

    @OneToOne(mappedBy = "entityB")
    private EntityA entityA;

    /* Getters and Setters */

    @Override
    public boolean isNew() {
        return isNew;
    }

}

Когда я пытаюсь сохранить новую сущность EntityA, используя следующий репозиторий данных Spring:

public interface EntityARepository extends JpaRepository<EntityA, Integer> {
}

он проверяет только isNew на EntityA, но игнорирует isNew на EntityB, и я продолжаю получать primary key constraint ошибки при выполнении операции постоянства

Причинапочему я реализую интерфейс Persistable, потому что EntityB на самом деле является чем-то, что может повторяться довольно много раз, поэтому я хотел бы проверить его существование и установить логическое значение isNew соответственно перед сохранением

Как сделать, чтобы хранилище пружин учитывало также свойство isNew дочернего класса, помеченное как каскадное

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