原工程用Hibernate 3.3.1 + Spring 3.02 + Spring MVC实现。
使用Hibernate Validator版本:4.2
http://hibernate.org/subprojects/validator.html
这里采用注解方式
第一步,改注解
如:
@Entity
@Table(name = "tour_calendar")
public class TourCalendar extends AbstractEntity {
@NotNull
@Size(max = 10)
private String title;
// 省略其他属性和setter、getter
}
使用hibernate.hbm2ddl.auto的create功能,发现产生title字段属性为默认属性,并没有not null修饰。
开始猜想是不是数据库问题,换了MySQL和Oracle都是这个问题。
仔细看了一下Hibernate Validator的文档,没发现什么有用的信息。
所有的过程都没有报错,而这些Annotation又没有起作用,于是猜想是不是hibernate版本问题。
下了最新版本的hibernate 3.6 final。解压后发现新版本的hibernate3.jar与3.3的区别:hibernate-annotation和hiberante-annotaion-common已经包含在其中。
删除了hibernate3.3的相关包,将3.6以及相关包放入。
运行出现第二个问题:
Caused by: java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
原因:hibernate-jpa-2.0-api-1.0.0.Final和ejb3-persistence产生冲突。
解决:删除ejb3-persistence包
再次运行,Hibernate Validator正常工作。