localization
ユーザー定義の入力用に作成しようとしています。例: ユーザーは、サッカーのようなカテゴリを複数の言語で定義できます。
モデル エンティティには、次のようなファイルが含まれている可能性があります。
@ManyToMany
@MapKeyColumn(name = "locale", insertable = false, updatable = false)
public Map<String, L18n> titles;
ローカライズされた文字列を次のように保存したいと思います。
@Entity
public class L18n {
@Id
@Constraints.Required
@Formats.NonEmpty
public Integer id;
public String key;
public String locale;
@Column(columnDefinition = "TEXT")
public String text;
}
yamlを使用してテストデータを保存します。
category:
- !!models.Category
...
titles:
- !!models.L18n
key: soccer
l18n:
- !!models.L18n
key: soccer
locale: de-CH
text: fdfdfsee
- !!models.L18n
key: soccer
locale: fr-CH
text: dlfkjsdlfj
このソリューションでは、次のエラーが発生します。
[error] Caused by: org.yaml.snakeyaml.error.YAMLException: No suitable constructor with 1 arguments found for interface java.util.Map
[error] at org.yaml.snakeyaml.constructor.Constructor$ConstructSequence.construct(Constructor.java:574)
[error] at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:182)
[error] at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.constructJavaBean2ndStep(Constructor.java:296)
[error] ... 65 more