Мы используем JPA для загрузки некоторых материалов из базы данных. Некоторые объекты могут иметь необязательные отношения между ними, например.
@Entity
public class First {
....
@OneToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH, CascadeType.DETACH})
@JoinColumns(value = {
JoinColumn(name = "A_ID", referencedColumnName = "A_ID", insertable = false, updatable = false),
JoinColumn(name = "B_ID", referencedColumnName = "B_ID", insertable = false, updatable = false)})
private Second second;
Когда эта ассоциация присутствует в базе данных, все работает нормально. Когда это не так, я получаю javax.persistence.EntityNotFoundException
Я хочу вместо исключения иметь это поле как NULL, если ассоциация отсутствует.
Я пробовал несколько разных вещей, например. используя опцию = true в аннотации отношений (которая по умолчанию является опцией по умолчанию), помещая ее как Nullable и т.д. Кажется, что ничего подобного не делает, кажется, что все эти параметры игнорируются.
Я нашел много ссылок, в которых упоминается эта же проблема (и некоторые вопросы здесь, в stackoverflow), но во всех них предлагается использовать аннотацию @NotFound
из Hibernate. Но мы НЕ хотим иметь никаких зависимостей от Hibernate (мы хотим сохранить все чисто JPA).
Кто-нибудь из вас знает какой-либо другой способ решить эту проблему?
Большое спасибо за вашу помощь!