복붙노트

[SPRING] CRUDRespository의 업데이트 또는 SaveUpdate, 사용 가능한 옵션이 있습니까?

SPRING

CRUDRespository의 업데이트 또는 SaveUpdate, 사용 가능한 옵션이 있습니까?

My Entity Bean을 사용하여 CRUD 작업을 수행하려고합니다. CRUDRepository는 찾기, 삭제, 저장하는 표준 메소드를 제공하지만 saveOrUpdate (엔티티 엔티티)가 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의 객체를 얻을 수 있습니다.

해결법

  1. ==============================

    1.이 방법의 구현

    이 방법의 구현

    S save (S 엔티티)

    인터페이스에서

    CrudRepository 리포지터리 (repository) 를 확장합니다.

    원하는 것을 자동으로 수행합니다. 엔티티가 새로운 경우 엔티티 관리자에서 persist를 호출합니다. 그렇지 않으면 병합을 호출합니다

    코드는 다음과 같습니다.

    public <S extends T> S save(S entity) {
    
        if (entityInformation.isNew(entity)) {
            em.persist(entity);
            return entity;
        } else {
            return em.merge(entity);
        }
    }
    

    여기에서 찾을 수 있습니다. SimpleJpaRepository는 Spring Data JPA에서 CrudRepository를 자동으로 구현하는 클래스이다.

    따라서 사용자 정의 saveOrUpdate () 메소드를 제공 할 필요가 없습니다. Spring Data JPA에서 다뤘습니다.

  2. ==============================

    2.솔루션을 얻었습니다. 솔루션은 양식 빈을 엔터티로 변환하는 데 @ModelAttribute를 사용합니다.

    솔루션을 얻었습니다. 솔루션은 양식 빈을 엔터티로 변환하는 데 @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) {
    
    }
    
  3. from https://stackoverflow.com/questions/24420572/update-or-saveorupdate-in-crudrespository-is-there-any-options-available by cc-by-sa and MIT license