@SecondaryTable вызывает свойство not-null, ссылающееся на исключение нулевого или временного значения - PullRequest
1 голос
/ 15 октября 2019

У меня двойная ссылка между двумя лицами Person и Account. У меня могут быть записи Person, у которых нет учетных записей для входа в систему.

Таблица Person имеет account_id, и он может быть пустым. Ссылка на аккаунт была получена от Персоны. На человека ссылались из учетной записи.

Я хотел разорвать эту двойную ссылку, поэтому я использовал @ SecondaryTable.

, но всякий раз, когда я создаю человека без учетной записи, свойство not-null ссылается на нульили временное значение: Person.Account

@Entity
@Table(name = "ACCOUNT")
@SequenceGenerator(name = "GENERATE_PKS_SEQ", sequenceName = "PKS_ACCOUNT_SEQ", allocationSize = 1)
@SecondaryTable(name = "PERSON", pkJoinColumns = @PrimaryKeyJoinColumn(name = "ACCOUNT_ID"))
@org.hibernate.annotations.Table(appliesTo = "PERSON", optional = false)
public class Account extends AbstractEntityWithCreateUpdateInfo {

  ...

  @Column(name = "FIRST_NAME", table = "PERSON")
  private String firstName;

  @Column(name = "LAST_NAME", table = "PERSON")
  private String lastName;

  @Column(name = "E_MAIL", table = "PERSON")
  private String email;

  ...

}


@Entity
@Table(name = "PERSON")
@SequenceGenerator(name = "GENERATE_PKS_SEQ", sequenceName = "PKS_PERSON_SEQ", allocationSize = 1)
public class Person extends AbstractEntityWithCreateUpdateInfo {

  @Valid
  @OneToOne(targetEntity = Account.class, fetch = FetchType.EAGER, cascade = 
  CascadeType.ALL)
  @JoinColumn(name = "ACCOUNT_ID", nullable = true)
  private Account account;

}

, но если я удалю pkJoinColumns, проблема исчезнет, ​​но, конечно, сгенерированное предложение соединения не будет правильным

...