2016-04-24 79 views
1

我有一個數據字典表是這樣的:如何在使用休眠時設計數據字典表?

tbl_data_dictionary 

filed 

type code code_name 

rows 

sex 1 boy 

sex 2 girl 

country 1 American 

country 2 China 

我有一個數據表:

field 

name sex_code country_code 

rows 

vivic 1 2 

如何我使用Hibernate映射代碼,代碼名稱? one_to_many映射設置似乎不符合我的需要。將tbl_data_dictionary分隔爲tbl_sex和tbl_country的唯一方法是?但是,如果我有很多類型的字典,並且在一種類型中沒有多少行,我覺得這是浪費。可以像這樣休眠映射:sex_code=code and type="sex"

回答

1

我們的團隊對類似的(普通)字典使用此類公用表。這是非常不方便的。

所以,這是更好地使用這種方法:

  • 對於小詞典使用枚舉。如果不使用外部SQL(例如,使用SQL生成的報表),則可以存儲大枚舉的序號。對於小枚舉,可以存儲名稱。
  • 對於大型字典,使用單獨的表格和相應的實體。 @MappedSuperclass用於常用字段很方便。

一個例子

enum Sex { 
    MALE, FEMALE, UNKNOWN 
} 

@MappedSuperclass 
class Dictionary { 

    @Id 
    private Long code; 

    @Column 
    private String name; 

} 

@Entity 
class Country extends Dictionary { 

} 

@Entity 
class User { 

    @Column 
    @Enumerated(EnumType.STRING) 
    private Sex sex; 

    @ManyToOne 
    private Country country; 

}