У меня есть база данных с объектом, которая имеет переводы.
Есть 2 таблицы: таблица Object с id
и более свойствами и таблица 'object_translation' с object_id
, language
(varchar) и translation
(varchar)
Я хотел бы сопоставить это с
public class Object {
private Map<Language, String> translations
}
Где язык - это перечисление в коде и строка в БД.
Возможно ли это с аннотациями?или мне нужно создать либо Collection<QuestionTranslation>
, либо написать свои собственные функции отображения гибернации в DAO (я использую spring-data, поэтому я бы предпочел сохранить их красивыми и чистыми в качестве интерфейсов и аннотаций)
Версии: spring-boot 2 с предоставленным гибернацией от spring-boot-starter:
spring boot: <version>2.0.3.RELEASE</version>
<hibernate.version>5.2.17.Final</hibernate.version>
<hibernate-jpa-2.1-api.version>1.0.2.Final</hibernate-jpa-2.1-api.version>
Пока у меня есть это:
@OneToMany
@JoinTable(name = "object_translation", joinColumns = {@JoinColumn(name = "object_id", referencedColumnName = "id")})
@MapKey(name = "language")
@MapKeyEnumerated(EnumType.STRING)
private Map<Language, String> translations;
Но как мне также отобразить значение?(для пояснения: строковое значение должно быть столбцом перевода в БД)
Поскольку у меня нет первичного ключа, это должно быть теоретически возможно?
Заранее спасибо!