0

私は(簡略化された)次のようなHibernateモデルを持っています:

public class CoverageLine {
  private Long id;
  private String coverageText;
  private boolean coveragePresetTo = true;
  private OnNewPolicy onNewPolicy = OnNewPolicy.SHOW;
}

(エンドユーザーによって) 任意の多くの言語に翻訳可能であるが、同じ ID を使用して、英語またはドイツ語でポリシー (行が追加される) を要求し、関連するバージョンを取得できるように、coverageText が必要です。 getCoverageText() によって返されるテキストの。他のフィールドはデータベースで翻訳できず、リソース ファイルを使用して翻訳されるため、DB 内のオブジェクトの複数のバージョンは望ましくありません。

私の暫定的な計画は、JSON clob フィールドを作成し、その中にすべての値を格納することです ([{"lang":"en","value","...."}],[{"lang":"de " ...}])、言語を一時フィールドとして設定し、get/set メソッドを使用して JSON を操作しますが、これは実際にはベスト プラクティスとは言えません。または、行 ID、言語、および文字列を含む 2 番目のテーブルを作成しますが、それは、より多くの SQL-y データを保持する以外に、データ モデルを大幅に拡張する可能性があります。

助言がありますか?

4

1 に答える 1

2

すべての選択肢を UI に送信することは、私の最初の選択肢ではありません。

1 つの方法は、台詞をテーブルに格納することです。Coverage テーブルには、扱っている言語を選択するための言語列の外部キーがあります。値がオブジェクトに読み込まれ、完了です。

欠点は、ロケールの変更には、サーバー、データベース、およびその逆への往復が必要になることです。

Spring は、ロケール依存のビューでこれを実現します。多分あなたもそれを試すことができます。

于 2009-10-19T09:55:50.687 に答える