не может вставить ноль в аннотацию гибернации отношения один ко многим - PullRequest
3 голосов
/ 16 сентября 2010

У меня есть класс A {Set b .....}, который содержит ссылки на класс B как Set. Это отношения один ко многим. У обоих классов есть секвенсор в оракуле. Я поместил каскад для всех в спящие аннотации. Когда я сохраняю класс A, он дает мне ошибку, которая не может вставить нулевой B.a_id. A-id не обнуляется в моей базе данных. Как я могу сохранить эти отношения.

Ответы [ 2 ]

9 голосов
/ 16 сентября 2010

Это однонаправленное отношение от A-> B. Столбец a_id в таблице B не имеет значения NULL. Когда hibernate пытается сохранить класс B, он не может найти значение для a_id.

Ну, вы пытались сделать JoinColumn не nullable?

@OneToMany 
@Cascade({CascadeType.ALL}) 
@JoinColumn(name="A_ID", nullable=false)
private Set<B> b;

Смотри также

2 голосов
/ 02 июля 2015

Я столкнулся с той же проблемой и решил ее, используя атрибут mappedBy аннотации @OneToMany в классе A:

@OneToMany(cascade = CascadeType.ALL, mappedBy = "m_a")
private Set<B> b;

Здесь m_a - это поле в классе B, которое относится к классу A:

@JoinColumn(name = "aId", nullable = false)
@ManyToOne
private A m_a;

Таким образом, @JoinColumn указывается только в одном месте, без дублированного кода.

...