2

我在 stackoverflow 中看到了一些问题,但它们都引用了旧答案(从 2004 年开始)并使用了休眠 xml 映射。

我正在用 Java 编写一个 API,它将根据算法返回存储在数据库中的产品。

API 还将获得一个语言环境并决定以该语言环境语言返回名称。

产品表:

product_id
name
price

我应该如何支持内化?我应该添加name_en name_fr等列吗?

或者我应该创建不同的表?

我应该如何在 Hibernate 的所需语言环境中返回名称?

我正在使用注释进行 O/R 映射

4

2 回答 2

1

我将删除该name列,并与名为的单独表创建一对多关系localized_name

create table localized_name (
    product_key int not null,
    locale nvarchar(32) not null,
    name nvarchar(255) not null
)

我的经验是使用 JPA,而不是 Hibernate,但我猜两者的代码看起来相似:

public class Product {
    private Collection<LocalizedName> names;
}

在 JPA 中,我会@Size(min = 1)在字段中添加一个注释,以确保它在持久化时至少包含一个元素。

于 2013-08-16T11:24:33.827 回答
1

我建议添加一个包含语言前缀(例如 en、fr、ro 等)的“lang”列和一个包含所有语言的名称的列“name”,并用“,”等分隔符分隔并解析细绳。

于 2013-08-16T10:37:12.737 回答