Почему при создании запись в таблице автоматически ссылается на id записи другой таблицы?

140
13 июня 2019, 14:40

Есть две сущности:

public class TimeOfSessionEntity {
    @Id
    @Column(name = "timeOfSessionId")
    private Long timeOfSessionId;
    @Column(name = "timeOfSession")
    private Timestamp timeOfSessionDate;
    private Long movieId;
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "dateOfSessionId")
    private DateOfSessionEntity dateOfSession;
}

И

public class DateOfSessionEntity {
    @Id
    @Column(name = "dateOfSessionId")
    private Long dateOfSessionId;
    @Column(name = "dateOfSessionTime")
    private Timestamp dateOfSession;
    @OneToMany(mappedBy = "dateOfSession", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    private Set<TimeOfSessionEntity> timeOfSession = new HashSet<>();
}

Когда я сохраняю в бд сущность TimeOfSessionEntity,то автоматически запись ссылается на таблицу DateOfSessionEntity с id=0. т.е. я хочу вначале создать запись в TimeOfSessionEntity, а потом уже выбрать на какой id ссылаться в DateOfSessionEntity. что я делаю не так? при сохранении TimeOfSessionEntity внешний ключ не указываю.

Answer 1

Значение id обычно генерится в Hibernate. Надо бы поставить аннотацию @GeneratedValue.

Более подробно можно почитать про эту аннотацию здесь.

Значение внешнего ключа устанавливается если вы сохраняет оба объекта, или же поочередно, тогда зависимый объект берётся из сессии.

READ ALSO
Регистрация ресурсов и пакетов в Jersey

Регистрация ресурсов и пакетов в Jersey

Jersey который я использую, реализован на спецификации JAX-RS 2x

147
Ошибка FMXLLoader.load()

Ошибка FMXLLoader.load()

Пытаюсь запустить приложение JavaFX, ловлю exception in Application start methodЕсть подозрение, что проблемы в пути к файлу

161
Практические примеры применения масок svg?

Практические примеры применения масок svg?

Прочитал эти статьи по теории масок, но не уверен, что понял всё правильно

187