一、JPA通用策略生成器
通过annotation来映射hibernate实体的,基于annotation的hibernate主键标识为@Id,
其生成规则由@GeneratedValue设定的.这里的@id和@GeneratedValue都是JPA的标准用法,
JPA提供四种标准用法,由@GeneratedValue的源代码可以明显看出.
@Target({METHOD,FIELD})
@Retention(RUNTIME)
public @interface GeneratedValue{
GenerationType strategy() default AUTO;
String generator() default "";
}
其中GenerationType:
public enum GenerationType{
TABLE,
SEQUENCE,
IDENTITY,
AUTO
}
JPA提供的四种标准用法为TABLE,SEQUENCE,IDENTITY,AUTO.
- TABLE:使用一个特定的数据库表格来保存主键。
SEQUENCE:根据底层数据库的序列来生成主键,条件是数据库支持序列。
IDENTITY:主键由数据库自动生成(主要是自动增长型)
AUTO:主键由程序控制。
如果要声明一个字段为主键以及主键自增,可以在类的成员前面加
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
(二)BindingResult对象的使用
Controller
@RequestMapping("/sender/message")
@ResponseBody
public ResponseBean sendMessage(@Valid Message messageBean, BindingResult bindingResult){
......
if (bindingResult.hasErrors()) {
System.out.println("验证失败!");
}
。。。。。。
}
注意:BindingResult 对象必须在 @Valid 的紧挨着的后面,否则接收不到错误信息。