@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="person_id_seq")
@Column(name = "id")
private Integer id;
@OneToMany(cascade=CascadeType.ALL, mappedBy = "personId")
private Set<Phone> phones;
}
@Table(name = "phone")
public class Phone {
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="phone_id_seq")
@Column(name = "id")
private Integer id;
@Column(name = "person_id", nullable = false)
private Integer personId;
}
// тест проходит
@Test
void test1() {
Person person = PersonMother.personNullId();
Person dbPerson = personRepository.save(person);
assertThat(dbPerson.getId()).isNotNull();
assertThat(dbPerson.getPhones().iterator().next().getId()).isNotNull();
}
// падает с ошибкой вставки (на findAll??)
@Test
void test2() {
Person person = PersonMother.personNullId();
Person dbPerson = personRepository.save(person);
assertThat(dbPerson.getId()).isNotNull();
assertThat(dbPerson.getPhones().iterator().next().getId()).isNotNull();
personRepository.findAll(); // ERROR: null value in column "person_id" violates not-null constraint
}
// в сущности, которая вернулась при сохранении, personId = null
@Test
void test3() {
Person person = PersonMother.personNullId();
Person dbPerson = personRepository.save(person);
assertThat(dbPerson.getId()).isNotNull();
assertThat(dbPerson.getPhones().iterator().next().getId()).isNotNull();
assertThat(dbPerson.getPhones().iterator().next().getPersonId()).isNotNull(); // assertion failed
}
Что за дичь? )
Этот hibernate вообще production-ready? )
1. saveAndFlush 2. я бы маппинг сделал bidirectional
Обсуждают сегодня