Почему Hibernate не обновляет столбец внешнего ключа для отношения OneToOne? - PullRequest
1 голос
/ 27 марта 2020
@Entity
@Table(name = "t1")
public class Object1 {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "f_id")
  private Long id;

  @OneToOne(cascade = {CascadeType.ALL},mappedBy = "object1")
  private Object2 object2;

}

@Entity
@Table(name = "t2")
public class Object2 {

  @Id
  @Column(name = "f_id")
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  @OneToOne
  @JoinColumn(referencedColumnName = "f_id",name = "f_integration_id",insertable = false, updatable = false)
  private Object1 object1;
}

Таблица t1 имеет столбец f_id , который является ее первичным ключом. Таблица t2 имеет столбец f_integration_id , который ссылается на столбец f_id в таблице t1 .

Теперь, когда Я пытаюсь сохранить Object1 , он создает 2 строки в обеих таблицах t1 & t2 . Но столбец внешнего ключа в таблице t2 по-прежнему NULL . Может кто-нибудь сказать, пожалуйста, почему это происходит? Пока он работает как очарование для отношений OneToMany.

1 Ответ

0 голосов
/ 27 марта 2020

Я думаю, что проблема в строке ниже. Ваши настройки обновляются и вставляются в ложь. Так что это не будет вставлять или обновлять. Вы можете сослаться на это Пожалуйста, объясните про вставляемый = ложь и обновляемый = ложь со ссылкой на аннотацию JPA @Column

@JoinColumn(referencedColumnName = "f_id",name = "f_integration_id",insertable = false, updatable = false)
...