Я пытаюсь реализовать следующий сценарий, используя однонаправленное сопоставление OneToOne с использованием JPA Hibernate в веб-приложении Spring-Boot:
- Используйте CrudRepository.save () для вставки записи в объект (EntityTwo) с внешним ключом другого объекта (EntityOne) как null
- Обновите вставленную запись, чтобы установить для внешнего ключа ненулевое значение, используя CrudRepository.save ()
Первая сущность выглядит так:
@Entity
public class EntityOne implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "entity_one_id", updatable = false, nullable = false)
private Long id;
}
Вторая сущность выглядит так:
@Entity
public class EntityTwo implements Serializable {
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "entity_one_id")
private EntityOne entityOne;
}
Так вот как выглядят вызовы сохранения
Первый вызов сохранения:
EntityTwo entityTwo = new EntityTwo();
entityTwoRepository.save(entityTwo);
Второй вызов сохранения:
EntityOne entityOne = entityOneRepository.getByEntityOneId(1); // this results in a not-null value
EntityTwo entityTwo = new EntityTwo();
entityTwo.setEntityOne(entityOne);
entityTwoRepository.save(entityTwo);
После второго вызова мой надеюсь, что внешний ключ будет установлен в EntityTwo, но это не так. Пожалуйста, дайте мне знать, если я делаю что-то совершенно не так или есть лучший / другой способ добиться этого с помощью Spring-Boot JPA