当它只包含@Id
值作为字符串时,创建单个实体是否有意义?
@Entity
class CountryCode {
@Id
String letterCode; //GBR, FRA, etc
}
@Entity
class Payment {
CountryCode code;
// or directly without further table: String countryCode;
}
或者您是否只使用letterCode作为字符串值而不是创建CountryCode
实体?
稍后可以获取包含特定国家/地区代码的所有付款。这两种解决方案都可能实现。但哪个更好(为什么)?
答案 0 :(得分:3)
是的,如果您将实体用作查找,则可以。在您的示例中,您可能希望为字母代码和第三列添加描述congaing(法国,英国等)的列,无论它是否处于活动状态,以及插入时和上次更改时的列。
答案 1 :(得分:1)
创建此类表以提供数据的一致性是有意义的,即不使用不存在的Payment
创建CountryCode
。在Payment
上有一个单独的实体(即表)和外键,可以检查数据库的一致性。
另一种可能的方法是对代码字段进行检查约束,但如果添加/删除代码和/或存在多个此类型的列,则这很容易出错。
答案 2 :(得分:1)
将letterCode
类Payment
类添加为字符串属性(或枚举以防止拼写错误)将提高获取性能,因为您不需要在CountryCode
上创建联接表。