如何限制用户只输入jpa列中的特定值?

时间:2014-06-27 14:57:12

标签: java hibernate jpa

我想限制用户将一组给定值以外的值输入到jpa列中。

例如,如果我有这样的表..

sno sname college_name
----------------------
101 smith Stanford
102 jack  Harvard
103 tiger Stanford
104 scott Harvard

和班级..

@Entity
@Table(name="student")
public class Student
{
@Id
@GeneratedValue
private Integer sno;
@Column(name="SNAME", nullable=false)
private String sname;
@Column(name="COLLEGE_NAME", nullable=false)
private String collegeName;

            // setters and getters omitted
}

是否有办法(可能使用注释)限制用户将 Stanford Harvard (区分大小写)输入大学名称。

注意:我想通过Java程序来保存数据库调用,而不是在数据库端编写触发器。上述实体是容器管理的,snosnamecollege_name是持久性字段,而不是属性。

在插入之前,我是否必须进行检查?我正在寻找另一种方式?

提前致谢。希望你能尽快回复。

3 个答案:

答案 0 :(得分:2)

使用枚举 http://tomee.apache.org/examples-trunk/jpa-enumerated/README.html

顺便说一下,我不会直接在DB表中存储String值(“Harvard”,“Stanford”)。相反,我会使用代码(1,2)并引入一个字典表:

代码|价值 1哈佛 2斯坦福

答案 1 :(得分:2)

枚举是一种很好的方式,但你可能无法预见到世界上所有的大学,所以你也可以考虑使用与已知大学不同的表格,以及与它有多对一的关系。 / p>

通常应使用bean验证来确保数据有效。 数据库触发器或约束很有用,但在不同的数据库提供程序之间并不是唯一的。

来自德国, 托马斯

答案 2 :(得分:1)

您可以将collegeName的类型更改为Enum,而不是String。