Вы могли закодировать двоичные данные с помощью base64 и поместить его в элемент Base64; ниже статьи довольно хороший на предмете.
Вы можете попробовать следующее:
@OneToOne(mappedBy="profile", targetEntity=UserAccountImpl.class)
private UserAccount userAccount
У вас есть следующие варианты:
You должен каким-то образом указать Hibernate, какой класс использовать для интерфейса UserAccount
. В настоящее время наиболее простым решением является использование конкретного типа вместо интерфейса в вашем UserProfileImpl
.
Вы можете использовать @Target
, чтобы указать используемую реализацию (см. [The docs] [1]).
Поле можно сопоставить с настраиваемым UserType
. Это позволяет выбрать отображение (какую реализацию использовать для интерфейса) во время выполнения, но вы должны написать код для копирования полей между вашими бизнес-объектами и БД самостоятельно (больше нет автоматического сопоставления).
Должен ли UserProfile быть отдельным объектом? Вы можете смоделировать это как компонент и объединить таблицы UserAccount и UserProfile в одну. Ваша объектная модель по-прежнему будет иметь отдельный объект UserProfile, это будет просто объект значения, принадлежащий UserAccount.
Не каждый объект должен быть реализован как Entity, а сопоставления «один-к-одному» на практике встречаются довольно редко .. ..