1

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
4

1 に答える 1

0

問題は、タイトルをマップとして定義したことだと思いますが、YAML マッピング構文を使用して定義しないでください。 YAML コレクション

タイトルの構文は、言語を使用した次の例のようになると思います: YAML 辞書の例

titles: 
    soccer: - !!models.L18n
                key: soccer
                locale: de-CH
                text: fdfdfsee
    football: - !!models.L18n
              ...

L18n インスタンスが最初に定義され、参照を使用するように .yml ファイルの形式を変更すると、YAML 仕様ではそれらがAlias Nodesと呼ばれ、タイトルをより合理的に見せることができます。

l18n:

     - &soccerDE !!models.L18n
            key: soccer
            locale: de-CH
            text: fdfdfsee

     - &soccerFR !!models.L18n
            key: soccer
            locale: fr-CH
            text: dlfkjsdlfj

category:

    - !!models.Category
            ...
            titles: 
                soccerDE: *soccerDE
                soccerFR: *soccerFR
于 2013-05-22T12:35:48.763 に答える