Как сделать две записи в таблице с помощью JPA и Hibernate. Итак, у меня есть связь между двумя таблицами человека и пользователя. Пользователь таблицы имеет столбец person_id. Итак, сначала нам нужно сделать запись для человека, получить идентификатор, записать в таблицу пользователей и сделать фиксацию.
@Entity
@Table(name = "person")
public class Person {
@Column(name = "id")
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "old_id", nullable = false)
private String oldId
}
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private long id;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
@Column(name = "person_id")
private long personId;
public User(String username, String password) {
this.username = username;
this.password = password;
}
personRepository.save(new Person("9999-1","Denis Beloff","Denis",
"Beloff", LocalDate.now(),LocalDate.now(),"M",33,
174.0,83.1,"Some Street",LocalDate.now(),"[email protected]",
"890327388", new User("[email protected]", "passw")));
это предоставлено CrudRepository




Если вы хотите сохранить код как есть, вам нужно сначала сохранить человека, а затем получить идентификатор и установить его в поле Users personId.
В противном случае вам нужно определить отношение один к одному от человека к пользователю с каскадированием при сохранении:
@OneToOne(cascade = CascadeType.PERSIST)
private Person person.
И тогда вы можете установить человека в классе User, и все будет вставлено Hibernate.
Нет, я не хочу оставлять код как есть. Я пытаюсь найти правильный путь. Так что, если у вас есть примеры или ссылки, было бы здорово.
Итак, мое предложенное решение с сопоставлением OneToOne — это то, что вы ищете. Для получения дополнительной информации вы должны прочитать Руководство по Hibernate docs.jboss.org/hibernate/orm/5.4/userguide/html_single/…
Где метод DAO, который вы должны использовать для сохранения?