Spring MVC,Hibernate 3和@Valid问题

3
我有一个使用@Valid注释的Spring MVC和JDBC,一切都很好,包括验证。
现在我创建了一个类似的Web应用程序,它使用Hibernate(而不是JDBC),到目前为止也很好用。
我决定在继续添加更多领域之前“插入”验证。
因此,我在控制器的保存过程中添加了@Valid,如下所示:
@RequestMapping(value = "/productgroup/save", method = RequestMethod.POST)
public String updateProductGroup(**@Valid** ProductGroup productGroup, BindingResult bindingResult) 

这是我所做的唯一更改,现在它崩溃并显示以下错误信息: java.lang.NoSuchMethodError: javax.persistence.Persistence.getPersistenceUtil()Ljavax/persistence/PersistenceUtil; 您正在使用org.hibernate hibernate-validator 4.0.2.GA jar和javax.validation validation-api 1.0.0.GA进行验证。尝试在ProductGroup的productGroupName字段和其Getter上都使用@NotEmpty注释,但仍无法解决问题。您之前没有在JDBC版本中遇到过此类问题。
1个回答

3
Hibernate Validator 可选依赖于 JPA,但当类路径中存在 JPA 时,Hibernate Validator 4 需要它是 JPA 2.0。在您的情况下,类路径中有 JPA 1.0。
换句话说,Hibernate Validator 4 兼容 Hibernate 3.5 或更高版本。对于旧版本的 Hibernate,请参见 Hibernate Compatibility Matrix

感谢您的迅速回复,真的非常感激。我对Spring和Hibernate不是很熟悉,请多包涵。这个Web应用程序只是我学习的一种方式,如果需要,我可以更改任何内容。除了指定的hibernate-entitymanager 3.3.2.GA外,我没有指定其他Hibernate jar文件,它有依赖关系。我有点困惑应该使用哪个版本的Hibernate。您有关于最佳设置方案的建议吗? - Lyndon
@Lyndon:如果你在Hibernate版本上没有限制,建议使用最新版本3.6.1-Final。 - axtavt
@axtavt:我尝试让3.6.1-Final版本工作,但是一直出现这个错误:[WARN] 找不到org.hibernate:hibernate-core:jar:3.6.1-Final的POM文件,没有可用的依赖信息。 缺少artifact org.hibernate: hibernate-core: jar: 3.6.1-Final:compile。 不确定该怎么办... - Lyndon
@axtavt:已切换回 hibernate-core 3.5.5-Final,但现在出现了以下问题:[警告] org.springframework:spring-webmvc:jar:3.0.4.RELEASE 的 POM 无效,传递依赖项(如果有)将不可用,启用调试日志记录以获取更多详细信息。我说过这很令人沮丧吗?总之,我不想让你感到烦恼,我只是想让你知道我一直在尝试自己解决这个问题...有什么想法吗? - Lyndon
@Lyndon:可能是因为较新版本的Hibernate没有发布在Maven中央仓库中。要通过Maven访问它们,您需要配置Jboss存储库,请参见http://community.jboss.org/wiki/MavenGettingStarted-Users。 - axtavt
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接