Hibernate检查更新记录是否成功

时间:2016-08-22 13:06:40

标签: java hibernate jersey

我正在使用Hibernate创建Jersey Web服务。可用的方法之一是更新数据库中的记录,我正在这样做:

private Boolean updateSingleRecord(Session session, Person updatedRecordData)
{
    try
    {
        short id = updatedRecordData.getPersonId();
        Person per = (Person) session.load(Person.class, id);
        per.setPersonEmail(updatedRecordData.getPersonEmail());
        per.setPersonMobile(per.getPersonMobile());
        transaction.commit(); //was defined earlier in the code
        return true;
    }
    catch(Exception e)
    {
        return false;
    }
}

定义字段以使移动电话需要具有唯一值。如果我将对象更新为已存在的值,我将不会收到任何错误,但该值不会被更改。如何在提交后检测是否进行了更改而不比较初始值和新值?

1 个答案:

答案 0 :(得分:0)

Hibernate Interceptor,它在创建,修改和更新等事件中就像一个触发器。 http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/events.html请检查实体是否已修改并保留。

你可以在Spring的Hibernate 4实现中创建一个新的会话范围拦截器

 Session session = s.withOptions().interceptor(new MyInterceptor().openSession();