2012-07-11 67 views
0

休眠验证我才发现,我的休眠验证不工作。我使用带注释的hibernate3。请检查以下代码。与注释

@Entity 
@Table(name = "registration") 
public class Pojo implements Serializable{ 

    @Id 
    @Column(name = "id") 
    @NotNull 
    private int id; 
    @Column(name = "name", length=5) 
    @NotNull 
    private String name; 
    @Column(name = "surname", length=5) 
    @NotNull 
    private String surname; 
    @Column(name = "address", length=5) 
    @NotNull 
    private String address; 
getters and setters 

} 

以下是我的servlet

System.out.println("Kshitij-----"); 
     PrintWriter out = response.getWriter(); 
     SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory(); 
     Session session = sessionFactory.openSession(); 
     Transaction transaction = session.beginTransaction(); 
     Pojo r = new Pojo(); 
     r.setId(Integer.valueOf(request.getParameter("id"))); 
     r.setName(request.getParameter("name")); 
     r.setSurname(request.getParameter("surname")); 
     r.setAddress(request.getParameter("address")); 
     session.save(r); 
     transaction.commit(); 
     session.close(); 
     out.println("Success....."); 

它插入记录没有价值。我应该添加新的东西吗??

+0

我建议检查类路径中包含'冬眠-validator'罐子。 – 2012-07-11 08:52:19

+0

我正在使用NetBeans,它提供了所有jibernate的hibernate。但我在那里检查,并没有休眠验证程序,所以我把它放在那里,并运行项目。一样。它不工作。 – KSHiTiJ 2012-07-11 09:04:39

回答

0

确认不是为什么你的数据不会保存的问题。 session.close();关闭会话,但在此之前您需要调用flush。这是corect以便与会话合作,succesfuly保存数据:

flush the session 
commit the transaction 
close the session 
handle exceptions 

See的文档

+0

我在说我通过这个注释使用了验证。当我提交没有价值的表单时,它必须给我验证错误,并且它没有给出。并在数据库中存储空白空间(非空)。这就是为什么我使用长度。但它不起作用。 – KSHiTiJ 2012-07-11 10:04:50

+0

好吧,我没有完全理解你的问题...嗯,我看到你会实现任何验证逻辑,因此你不能期望你的实体进行验证。你应该使用基于事件的验证或应用程序验证...看看这篇文章http://docs.huihoo.com/hibernate/annotations-reference-3.2.1/validator.html – Eduard 2012-07-11 10:51:13

+0

所以它意味着这些注释不是足以验证实体,我必须扩展Validator类。 – KSHiTiJ 2012-07-11 11:01:48

0

尝试直接与验证实体;

ValidatorFactory factory = Validation.byDefaultProvider().configure().traversableResolver(new CustomTraversableResolver()).buildValidatorFactory(); 
Validator validator = factory.getValidator(); 
Set<ConstraintViolation<BaseValidationObject>> constraintViolations = Validator.validate(r); 

并添加例如, @Min(1)或@Length(1,255)添加到属性注释中。

的constraintViolations变量包含任何失败的情况。

-1

也许你可以尝试删除当前表并重新创建它添加了这些约束条件之后。尝试一些重新启动。我以前有同样的问题,它的工作原理。不知道这是你的情况。