Я новичок в JPA.Я хочу понять, какую помощь дает мне JPA в сохранении объектов в базе данных.Мой пример: класс Person связан с классом Address.Каждый человек может иметь несколько адресов.Я моделирую этот факт следующим образом:
@Entity
public class Person implements Serializable {
@Id int id;
String firstName;
@OneToMany(mappedBy="id", cascade={CascadeType.PERSIST, CascadeType.REMOVE})
List<EMailAddress> emailList;
//of course i have all my getters
Мой класс EmailAddress похож:
@Entity
public class EMailAddress implements Serializable {
@Id @GeneratedValue (strategy=GenerationType.TABLE)
Integer id;
String address;
//here i have all my getters
}
ОК.Первая проблема заключается в том, что когда я пытаюсь сохранить объект person со следующим очень простым кодом, я получаю ошибку внешнего ключа:
Person p0 = new Person();
p0.setFirstName("Alan");
p0.setId(99);
//I create an EMailAddress object, and add it to the Person adresses list
EMailAddress ma = new EMailAddress();
ma.setAddress("Alan@sample.world");
p0.setEmailList(new ArrayList());
p0.getEmailList().add(ma);
em.getTransaction().begin();
em.persist(p0);
em.getTransaction().commit();
Исключение:
10924 [main] ERROR org.hibernate.util.JDBCExceptionReporter - INSERT on table 'EMAILADRESS' has caused a violation of foreign key constraint 'FK95CEBD60BE95C400' for key (327680). The instruction has been rollbacked.