近日学习seam,采用的开发环境是redhat studio beta 2,数据库是mysql<o:p></o:p>
<o:p></o:p>
采用工具自动生成的Entity 的id 如下:<o:p></o:p>
<o:p></o:p>
<o:p></o:p>
- @Id
- @GeneratedValue(strategy = IDENTITY)
- @Column(name = "id", unique = true, nullable = false)
- @NotNull
- public Integer getId() {
- return this.id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
但是在生成的页面中创建响应的对象时,产生错误如下:<o:p></o:p>
Exception during request processing: javax.servlet.ServletException: #{rolesHome.persist}: org.hibernate.validator.InvalidStateException: validation failed for: org.domain.liang.entity.Roles<o:p></o:p>
<o:p></o:p>
一直不求甚解,甚至于采用seam 2.0的seam-gen自动生成的项目文件也完全相同,但是可以使用。郁闷中<o:p></o:p>
今天突然看到错误信息,说得是验证不通过,我就想会不会和id有关系?在hibernate检查类的时候id还没有生成,导致验证不通过,无法持久化,也就无法生成id,于是将上面Entity中的id 的配置信息中@NotNull删除,果然成功。<o:p></o:p>
<o:p></o:p>
问题:在seam 2.0中就没问题,为什么seam 1.2中就有?还有@NotNull应该是正确的配置,删除以后会不会有其他的问题?针对我这个错误还有没有其他的解决办法?<o:p></o:p>