【问题标题】:Design pattern for translatable Hibernate models可翻译的 Hibernate 模型的设计模式
【发布时间】:2009-10-19 09:52:27
【问题描述】:

我有一个(简化的)Hibernate 模型,如下所示:

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

我需要将coverageText(由最终用户)翻译成任意多种语言,但使用相同的ID,这样我就可以请求英语或德语的政策(添加行),并且有getCoverageText() 返回的文本的相关版本。其他字段在数据库中是不可翻译的,它们是使用资源文件翻译的,因此数据库中的对象的多个版本是不可取的。

我的初步计划是制作一个 JSON clob 字段,并将所有值存储在其中 ([{"lang":"en","value","...."}],[{"lang" :"de" ...}]),将语言设置为瞬态字段,并使用 get/set 方法操作 JSON,但这并不真正具有最佳实践的感觉。或者,拥有第二个包含 line-id、语言和字符串的表,但这有可能大大扩展我的数据模型,而只是拥有更多的 SQL-y 数据。

有什么建议吗?

【问题讨论】:

    标签: hibernate internationalization datamodel


    【解决方案1】:

    将所有选项发送到 UI 并不是我的首选。

    一种方法是将措辞存储在表格中。 Coverage 表将有一个语言列外键来挑选您正在处理的语言。该值将被加载到对象中,您就完成了。

    缺点是区域设置更改需要往返服务器、数据库和返回。

    Spring 使用与语言环境相关的视图来实现这一点。也许你也可以试试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-11
      • 2015-08-25
      • 2010-12-04
      • 1970-01-01
      • 2010-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多