1

@Id当它应该只包含作为字符串的值时,创建单个实体是否有意义?

@Entity
class CountryCode {
   @Id
   String letterCode; //GBR, FRA, etc
}

@Entity
class Payment {
   CountryCode code;
   // or directly without further table: String countryCode;
}

还是只使用 letterCode 作为字符串值而不是创建CountryCode实体?

例如,稍后应该可以获取包含特定国家代码的所有付款。这两种解决方案都可能实现。但哪个更好(为什么)?

4

3 回答 3

3

是的,如果您将实体用作查找,则可以。在您的示例中,您可能希望为字母代码添加一列用于描述 congaing(法国、英国等),并添加第三列(无论它是否处于活动状态)以及插入时间和上次更改时间的列。

于 2013-11-05T11:44:57.920 回答
1

创建这样的表以提供数据的一致性是有意义的,即 noPayment是用 non-existing 创建的CountryCode。拥有一个单独的实体(即表)和外键Payment允许检查数据库中的一致性。

另一种可能的方法是对代码字段进行检查约束,但如果添加/删除代码和/或这种类型的列不止一个,这很容易出错。

于 2013-11-05T11:45:54.217 回答
1

添加letterCodePayment作为字符串属性(或枚举以防止拼写错误)将提高获取性能,因为您不需要在CountryCode表上创建连接。

于 2013-11-05T11:46:33.170 回答