У меня есть приложение Spring-boot
, которое использует JPA
и Hibernate
. Вы можете найти весь код в этом репозитории GitHub .
Мой вопрос в том, как добавить функциональность интернационализации в указанный столбец c без каких-либо внешних ключей и с использованием структуры JSON
?
Например, я хотел бы определить объект JPA следующим образом:
@Entity
class Book {
@Id
private int id;
private Author author;
@I18n //<- this annotation is something that I am looking for
private String title;
}
, и тогда данные в столбце title
будут сохранены, как показано ниже, для en
и de
locales:
{"en":"Cologne","de":"Köln"}
А затем, когда текущая локаль de
, Köln
и когда en
установлен как локаль, тогда Cologne
извлекается во время чтения данных!
Также, когда мы сохраняем данные, переданная строка сохраняется в соответствующем свойстве в формате JSON. Например, если локаль установлена на es
, а пользователь передает Kolne
, тогда у нас должны быть следующие данные в БД:
{"en":"Cologne","de":"Köln","es":"Kolne"}
Мне интересно, что большинство решений в web для гибернации, а JPA основан на старом методе с использованием таблиц languages
и translations
. Что-то вроде здесь или здесь .
Однако я ищу некоторые решения, такие как этот , который предлагается для Laravel и сохраните переводы точно так, как я объяснил (т.е. в объекте JSON и в том же столбце)!
Единственное решение, которое я нашел и которое может быть каким-то образом релевантным (не 100%), - этот , однако он не работает, когда я пытался его протестировать, и, похоже, он больше не поддерживается!