У меня есть основная таблица 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?