У меня есть следующие два класса в oneToMany и ManyToOne
Родительский класс:
@Entity
class ParentBean{
@GeneratedValue( strategy = GenerationType.IDENTITY )
private Long id_parent;
@Column( name = "NAME" )
private String name;
@OneToMany( mappedBy = "parent", cascade = CascadeType.ALL, fetch = FetchType.EAGER )
private List<ChildBean> revisionList;
}
дочерний класс:
@Entity
class ChildBean {
@GeneratedValue( strategy = GenerationType.IDENTITY )
private Long id_child;
private String name;
@ManyToOne( fetch = FetchType.EAGER, cascade = CascadeType.ALL )
@JoinColumn( name = "ID_PARENT", nullable = false )
private ParentBean parent;
}
Я использую следующий код для создания bean-компонентов:
ParentBean parent = new ParentBean();
parent.setName( "test parent");
List<ChildBean> revList = new ArrayList<>();
ChildBean child = new ChildBean();
child.setName( "test child" );
revList.add ( child );
parent.setRevisionList( revList );
Затем я использую это для записи структуры компонента в базу данных...
@PersistenceContext
private EntityManager em;
@Override
public void addDrawing( FtDrawing drawingIn )
{
em.persist( drawingIn );
em.flush();
}
Родительский компонент написан, но я получаю следующую ошибку, и дочерний компонент никогда не записывается
Вызвано: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: столбец «ID_PARENT» не может быть нулевым
Я посмотрел в Интернете и просмотрел несколько разных примеров, и все они кажутся такими же, как и то, что я делаю... Моя база данных - MySQL, и у меня есть два первичных ключа, для которых установлено значение auto_increment. Последняя вещь. Я не указал внешний ключ в дочерней таблице для обратной связи с родительской таблицей... это обязательно? Я использовал более старую версию спящего режима, и в этом не было необходимости...
Заранее спасибо за помощь
ChildBean
необходимо установить его полеparent
. Проблема в том, что когда вы добавляете дочерний элемент в родительский список, родительское поле дочернего элемента не устанавливается. Установите его перед сохранением (при каскадном сохранении родителя). - person Unda   schedule 29.06.2014