У меня двойная ссылка между двумя лицами 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, проблема исчезнет, но, конечно, сгенерированное предложение соединения не будет правильным