在CRUDRespository中更新或SaveorUpdate,有没有可用的选项

Kul*_*sad 40 spring spring-boot

我正在尝试使用My Entity bean进行CRUD操作.CRUDRepository提供标准的方法find,deletesave但它有没有像一般的方法saveOrUpdate(Entity entity)是依次呼叫HibernateHibernateTemplate会话saveorUpdate()的方法.

CRUDRepository提供此功能的方式就是这样使用

@Modifying
@Query("UPDATE Space c SET c.owner = :name WHERE c.id = :id")
Integer setNameForId(@Param("name") String name, @Param("id")
Run Code Online (Sandbox Code Playgroud)

但这不是通用的,需要为完整的表单字段编写.如果有任何方法或者我可以获得Hibernate的会话或Spring HibernateTemplate的对象来解决这个问题,请告诉我.

geo*_*and 101

该方法的实现

<S extends T> S save(S entity)

来自界面

CrudRepository<T, ID extends Serializable> extends Repository<T, ID>

自动做你想要的.如果实体是新的,它会调用persistentity manager,否则它会调用merge

代码如下所示:

public <S extends T> S save(S entity) {

    if (entityInformation.isNew(entity)) {
        em.persist(entity);
        return entity;
    } else {
        return em.merge(entity);
    }
}
Run Code Online (Sandbox Code Playgroud)

并且可以在这里找到.请注意,这SimpleJpaRepositoryCrudRepository在Spring Data JPA 中自动实现的类.

因此,不需要提供自定义saveOrUpdate()方法.Spring Data JPA为您提供帮助.