我正在尝试使用 My Entity bean 执行 CRUD 操作。CRUDRepository
提供标准方法find
, delete
and save
但没有可用的通用方法,例如saveOrUpdate(Entity entity)
进而调用Hibernate
or HibernateTemplate
会议saveorUpdate()
方法。
The way CRUDRepository
提供这个功能是为了
像这样使用
@Modifying
@Query("UPDATE Space c SET c.owner = :name WHERE c.id = :id")
Integer setNameForId(@Param("name") String name, @Param("id")
但这不是通用的,需要为完整的表单字段编写。
请告诉我是否有任何方法或者我可以获取 Hibernate 会话或 Spring HibernateTemplate 对象来解决此问题。
方法的实现
<S extends T> S save(S entity)
从界面
CrudRepository<T, ID extends Serializable> extends Repository<T, ID>
自动做你想做的事。如果该实体是新的,它将调用persist
on the entity manager
,否则会调用merge
代码如下所示:
public <S extends T> S save(S entity) {
if (entityInformation.isNew(entity)) {
em.persist(entity);
return entity;
} else {
return em.merge(entity);
}
}
并且可以找到here https://github.com/spring-projects/spring-data-jpa/blob/master/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java#L505。注意SimpleJpaRepository
是自动实现的类CrudRepository
在 Spring Data JPA 中。
因此,无需提供定制saveOrUpdate()
方法。 Spring Data JPA 可以满足您的需求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)