У меня есть этот класс, представляющий сущность с владельцем, которая может быть пересечением или агентом (агент также принадлежит пересечению).
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class OwnedTemporalEntity extends TemporalEntity {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "intersection_id", referencedColumnName = "id", insertable = false, updatable = false)
private Intersection intersection = null;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name = "intersection_id", referencedColumnName = "intersectionId"),
@JoinColumn(name = "agent_id", referencedColumnName = "id")
})
private Agent agent = null;
}
Если я создаю OwnedTemporalEntity с агентомseted и null Intersection, все работает нормально, столбцы intersection_id и agent_id определены с соответствующим идентификатором.
Но, если я создаю OwnedTempoeralEntity с выбранным пересечением и нулевым агентом, и agent_id, и intersection_id сохраняются в таблице как нулевые, когда только agent_id должен быть нулевым.
Что не так с моей структурой?
OBS 1: Если я изменяю «вставляемый = ложный, обнуляемый = ложный» на присоединения Агента, происходит обратное.В этом случае, если я устанавливаю пересечение, работает нормально, но если я устанавливаю агента, и agent_id, и intersection_id сохраняются как нулевые.Если я добавлю «inserttable = false, nulable = false» для обоих объединений, в любом случае и agent_id, и intersection_id сохраняются как null.
OBS 2: TemporalEntity - это сущность с автоматически генерируемым полем идентификатора и отметкой времени.