Play框架中db级别的国际化

时间:2011-10-25 13:52:42

标签: hibernate jpa internationalization playframework

JPA中的多语言字段是否有一个干净的解决方案?

我想到这个db结构:

表产品

+---------+--------------+-----+ 
| Field   | Type         | Key | 
+---------+--------------+-----+ 
| id      | bigint(20)   | PRI | 
| price   | varchar(255) |     | 
+---------+--------------+-----+ 

table product_lang

+------------------+--------------+-----+ 
| Field            | Type         | Key | 
+------------------+--------------+-----+ 
| id               | bigint(20)   | PRI | 
| lang             | varchar(3)   | PRI | 
| title            | varchar(255) |     | 
| description      | varchar(255) |     | 
+------------------+--------------+-----+ 

这是我想要使用的课程:

@Entity
public class Product {

  @Id
  public Long id;

  public Double price;

  public Locale lang;

  @Translateable
  public String title;

  @Translateable
  public String description;
}

2 个答案:

答案 0 :(得分:0)

IMO,错误的解决方案。如果你真的想要db国际化,我宁愿创建多个数据库,而不是一个包含所有数据的数据库。

只需检查语言以获得正确的数据库连接。

答案 1 :(得分:0)

我不确定您是否可以按照提议的方式将一个实体映射到两个表。与您想要的类似,您可以将翻译存储为:

@CollectionOfElements
Map<String, String> titles;

其中键是用户正在浏览的Lang的字符串以及要显示的标题的值。这将在数​​据库中创建两个表,并允许快速访问翻译。