У меня есть две JPA
-сущности, связанные один-к-одному:
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Person extends IdentifiableObject {
private String firstName;
private String lastName;
private int age;
private LocalDate birthday;
@OneToOne(optional = false, cascade = CascadeType.ALL)
@JoinColumn(name = "passport_id")
private Passport passport;
}
@Entity
@Data
public class Passport extends IdentifiableObject {
private String series;
private String number;
private LocalDate issueDate;
private Period validity;
@OneToOne(optional = false, mappedBy = "passport")
private Person owner;
}
Они наследуются от общего класса:
@MappedSuperclass
@ToString
@Data
public abstract class IdentifiableObject {
@Id
@GeneratedValue
private Long id;
}
Я хочу сохранить их в базе H2
таким образом:
@Override
public void run(String... args) throws Exception {
Person person = new Person();
person.setAge(43);
person.setBirthday(LocalDate.now());
person.setFirstName("Hovard");
person.setLastName("Lovecraft");
Passport passport = new Passport();
passport.setSeries("1234");
passport.setNumber("456789");
passport.setOwner(person);
personRepository.save(person);
}
Но почему-то во время выполнения я получаю ошибку: Caused by: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: �������� NULL �� ��������� ��� ���� "PASSPORT_ID"
Что в этом коде не так? Что это за ошибка? Почему она произошла и как ее исправить?
Дополнение: при сохранение person не сохраняется в таблице passport. Почему так? Здесь Person владелец связи, поэтому при сохранении person должен сохраниться и passport.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Всем доброго времени сутокВопрос заключается в следующем: почему при объявлении в классе
В документации к класу Scanner написано, что tokens() возвращает стрим стрингов, таких же которые возвращал бы метод next()
Прошу подсказать, как можно обыграть такую ситуацию с break: