CRUDRespository에서 업데이트 또는 저장 업데이트, 사용 가능한 옵션이 있습니까?
My Entity bean을 사용하여 CRUD 작업을 수행하려고 합니다. CRUDRepository
표준적인 방법을 제공하다find
,delete
그리고.save
그러나 다음과 같은 일반적인 방법은 없습니다.saveOrUpdate(Entity entity)
라고 하는 것이 차례차례로 요구됩니다.Hibernate
또는HibernateTemplate
세션saveorUpdate()
방법들.
그 길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
에서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);
}
}
여기서 찾을 수 있습니다.주의:SimpleJpaRepository
를 자동으로 구현하는 클래스입니다.CrudRepository
Spring Data JPA에서 확인할 수 있습니다.
따라서 커스텀을 제공할 필요가 없습니다.saveOrUpdate()
방법.Spring Data JPA에 의해 커버됩니다.
이 문제는 "나는 Tymeleaf UI 템플릿과 엔티티 빈이 아닌 Form bean을 사용 중이기 때문에 Spring boot에서 저장되지 않습니다.이제 Form bean 전체를 값이 변경된 Entity bean으로 변환하여 유지하려고 합니다."프로젝트에서 직면했던 특정 문제에 대한 해결책을 찾았습니다.솔루션은 @ModelAttribute를 사용하여 폼빈을 엔티티로 변환하는 것입니다.
@ModelAttribute("spaceSummary")
public SpaceSummary getSpaceSummary(int id){
return this.spaceSummaryService.getSpaceSummary(id);
}
그리고.
@RequestMapping(value="/mgr/editSpace", method = RequestMethod.POST)
public ModelAndView editSpace(@ModelAttribute("spaceSummary") SpaceSummary
spaceSummary, BindingResult result, RedirectAttributes redirect, ModelAndView model) {
}
언급URL : https://stackoverflow.com/questions/24420572/update-or-saveorupdate-in-crudrespository-is-there-any-options-available
'programing' 카테고리의 다른 글
리덕스 대 플레인 리액트 (0) | 2023.02.26 |
---|---|
메시지를 로드하기 위한 ng-clock의 반대 (0) | 2023.02.26 |
JPA 과도 주석 및 JSON (0) | 2023.02.26 |
워드프레스, pre_get_posts에 여러 meta_key가 있습니다. (0) | 2023.02.26 |
React에서 증분 연산자를 사용하는 방법 (0) | 2023.02.26 |