我有一个电影租赁系统的现有数据库.每部电影都有一个评级属性.在SQL中,他们使用约束来限制此属性的允许值.
CONSTRAINT film_rating_check CHECK
((((((((rating)::text = ''::text) OR
((rating)::text = 'G'::text)) OR
((rating)::text = 'PG'::text)) OR
((rating)::text = 'PG-13'::text)) OR
((rating)::text = 'R'::text)) OR
((rating)::text = 'NC-17'::text)))
Run Code Online (Sandbox Code Playgroud)
我认为使用Java枚举将约束映射到对象世界会很好.但由于"PG-13"和"NC-17"中的特殊字符,因此不可能简单地采用允许的值.所以我实现了以下枚举:
public enum Rating {
UNRATED ( "" ),
G ( "G" ),
PG ( "PG" ),
PG13 ( "PG-13" ),
R ( "R" ),
NC17 ( "NC-17" );
private String rating;
private Rating(String rating) {
this.rating = rating;
}
@Override
public String toString() {
return rating;
}
}
@Entity
public class Film …Run Code Online (Sandbox Code Playgroud)