我试图弄清楚哪些方法正在调用Validator接口的validate()函数,这样我就不会手动调用该函数(如果有的话)。但是,如果以下方法调用validate()函数,我无法找到适当的文档。
我猜测以下函数调用validate()函数:
Session.save()
Session.update()
Session.saveOrUpdate()
(Session是一个Hibernate会话)
答案 0 :(得分:0)
这些方法都不会触发验证。 The documentation说:
每当发生PreInsertEvent,PreUpdateEvent或PreDeleteEvent时,侦听器将验证实体实例的所有约束,并在违反任何约束时抛出异常。在Hibernate进行任何插入或更新之前,将检查每个默认对象。默认情况下,预删除事件不会触发验证。
因此,验证将在刷新时发生,就在Hibernate在数据库中插入或更新实体之前。