Свойство emailId является внешним ключом, относящимся к столбцу emailId в таблице User.
Тогда не добавляйте свойство emailId
, добавьте User
.
(...) Как мне аннотировать это так, чтобы при каждом извлечении AppInput из db соответствующие данные пользователя также заполнялись?
Не уверен, поскольку это может быть ManyToOne
или OneToOne
, но я предполагаю, что это ManyToOne
:
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="USERDETAILS_EMAIL_ID", referencedColumnName="EMAIL_ID")
private User userDetails;
Элемент аннотации fetch
в демонстрационных целях EAGER
является значением по умолчанию.Элементы аннотаций name
и referencedColumn
в JoinColumn
также являются необязательными.Ниже приведена краткая сводка из спецификации JPA:
11.1.21 Аннотация JoinColumn
Аннотация JoinColumn
используется для указания столбца для присоединения к ассоциации сущностей или коллекции элементов.
В таблице 20 перечислены элементы аннотации, которые могут быть указаны для аннотации JoinColumn
, и их значения по умолчанию.
Если для самой аннотации JoinColumn
по умолчанию используется один столбец соединения, иприменяются значения по умолчанию, описанные в таблице 20.
Элемент аннотации name
определяет имя столбца внешнего ключа.Остальные элементы аннотации (кроме referencedColumnName
) относятся к этому столбцу и имеют ту же семантику, что и для аннотации Column
.
Если элемент referencedColumnName
отсутствует, предполагается, что внешний ключ ссылается на первичный ключ ссылочной таблицы.
См. Таблицу 20 в спецификации для полных и исчерпывающих деталей.