JPA / Hibernate: удалить объект, на который ссылается неизменяемый объект @OneToOne, не работает - PullRequest
1 голос
/ 20 апреля 2020

У меня есть основная таблица Lot и представление базы данных LotValues (которое содержит некоторые вычисляемые поля ...). Представление LotValues имеет то же id из Lot.

Это основной объект Lot:

@Entity
@Table(name = "FDE_LOT")
public class Lot {

    @Id
    private String id;

    private String name;

    @OneToOne(mappedBy = "lot", fetch = FetchType.LAZY)
    private LotValues lotValues;

}

Это представление базы данных LotValues, поэтому Я определил его как @Immutable сущность:

@Entity
@Immutable
@Table(name = "FDE_LOT_VALUES")
public class LotValues {

    @Id
    private String id;

    @MapsId
    @JoinColumn(name = "id")
    @OneToOne(fetch = FetchType.LAZY)
    private Lot lot;

    private Double size;

}

Когда я вызываю lotRepository.delete(id), Hibernate выполняет два запроса SELECT для сущности Lot и сущности LotValues, но запрос DELETE не выполняется.

Если я удаляю @OneToOne(mappedBy = "lot", fetch = FetchType.LAZY) в основном объекте Lot, выполняется запрос DELETE.

Почему это? Может быть, неправильное определение первичного ключа объекта @Immutable?

1 Ответ

0 голосов
/ 20 апреля 2020

Решена настройка обнуления ссылок

LotValues lotValues = lotValuesRepository.findOne(id);
lotValues.setLot(null);

Lot lot = lotRepository.findOne(id);
lot.setLotValues(null);

lotRepository.delete(id);
...