Спящий режим один к одному, Нет строки с данным идентификатором, существует исключение
Мне нужна связь между двумя объектами, поэтому я использую один-к-одному
@Entity
@Table(name = "T_USER")
public class User implements Serializable {
@Id
@Column(name = "user_id")
private int userId;
@Column(name = "login")
private String login;
@OneToOne(optional = true)
@JoinColumn(name="login", referencedColumnName="person_id", nullable = true, insertable = false, updatable = false)
private Person person;
}
@Entity
@Table(name = "T_PERSON")
public class Person implements Serializable {
@Id
@Column(name = "person_id")
private String personId;
@Column(name = "pin")
private String pin;
}
Если в таблице T_USER нет элемента для особого ЧЕЛОВЕКА, user.getPerson выдает исключение:
org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [packagename.com.entity.Person#scabriou]
Но если у меня есть ссылка между двумя таблицами в db, то getter работает!
Ответы
Ответ 1
Я не могу сказать, если это лучшее решение, но вы можете использовать аннотацию @NotFound
. Например.
@NotFound(action = NotFoundAction.IGNORE)
private Person person;
Я верю, что человек останется null
, и исключение не будет выбрано.