Spring数据jpa更新(保存)不会更新实体

时间:2017-06-30 07:51:12

标签: java spring spring-data-jpa

我有以下方法来更新实体:

@Override
@Transactional
public void updateMethod(){

     foo(); //

     // data processing...

     repository.save(entity);
}

问题是如果执行foo(),则不更新实体。我也试过这种方式:

fooService.foo();
entityService.updateMethod();

结果相同。

但如果foo()未按预期执行所有工作,则更新实体。

我在这里遗漏了什么吗?

更新

基本上foo()所做的是查询一些数据repository.findBy....();然后使用结果来执行一些业务逻辑,然后如果一切正常则返回true,否则它将返回false。

如果foo返回true,则update方法修改实体。我正在使用反射修改实体:

 Entity entity = repository.findOne(id);
Field[] field = Entity.Class.getDeclaredFields();
for (Field field: fields){
    if (map.containsKey(field.getName())){
        setattr(entity, field.getName(), map.get(field.getName());
}
}

private boolean setattr(Object object, String fieldName, Object fieldValue){
         Class<?> clazz = object.getClass();
            while (clazz != null) {
                try {
                    Field field = clazz.getDeclaredField(fieldName);
                    field.setAccessible(true);
                    field.set(object, fieldValue);
                    return true;
                } catch (NoSuchFieldException e) {
                    clazz = clazz.getSuperclass();
                } catch (Exception e) {
                    throw new IllegalStateException(e);
                }
            }
            return false;
    }

0 个答案:

没有答案