我正在使用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;
}
}
定义字段以使移动电话需要具有唯一值。如果我将对象更新为已存在的值,我将不会收到任何错误,但该值不会被更改。如何在提交后检测是否进行了更改而不比较初始值和新值?
答案 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();