JPA 쿼리를 사용하여 단일 양식을 업데이트하는 방법

아서 데커

도움이 필요합니다. 데이터베이스에서 단일 필드를 업데이트하고 있지만 JPA 쿼리를 사용하는 것은 좋지 않습니다. 나는 아직도 배우고있다.

@Entity
public class CertificateProgramme {

        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;

        @NotNull(message = "The above field must not be blank.")
        @Pattern(regexp="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\."
                +"[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@"
                +"(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?",
                message="Please enter a valid email address")
        private String email;

        private boolean flag;

플래그 필드를 false로 업데이트하고 싶습니다. serviceImpl 클래스에서 save 메소드를 사용할 때 업데이트 할 수 있지만 저장하지 않고 시도하면 작동하지 않습니다.

(CertificateProgramme certificateProgramme)ServiceImpl에서 구현할 서비스 인터페이스에 unFlagger 메서드를 정의합니다.

public interface CertificateService {
    List<CertificateProgramme> findAll();
    CertificateProgramme ListAll();
    CertificateProgramme findOne(Long id);
    void save(CertificateProgramme certificateProgramme);
    CertificateProgramme flagger(CertificateProgramme certificateProgramme);
    CertificateProgramme unFlagger(CertificateProgramme certificateProgramme);
}

ServiceImpl.java

 @Override
public CertificateProgramme flag(CertificateProgramme certificateProgramme) {
    certificateDao.unFlagger(certificateProgramme);
    return certificateProgramme;
}

Dao.java

@Repository
public interface CertificateDao extends CrudRepository<CertificateProgramme, Long> {
    @Query("select t from CertificateProgramme t where t.user.id=?#{principal.id}")
    List<CertificateProgramme> findAll();
    @Query("select t from CertificateProgramme t where t.user.id=?#{principal.id}")
    CertificateProgramme ListAll();

여기 도움이 필요합니다

@Modifying
@Query("update CertificateProgramme ear set ear.flag = ?#{'FALSE'} where ear.user.id=?#{principal.id}")
CertificateProgramme unFlagger(CertificateProgramme flag);

제어 장치

이것은 플래그 필드를 업데이트해야하지만 업데이트되지 않습니다. 차라리 오류가 발생합니다.

@RequestMapping(value = "cert_prog/{certId}", method = RequestMethod.POST)
    public String UpdateFlag(@PathVariable Long certId, CertificateProgramme certificateProgramme){
        certificateService.unFlagger(certificateProgramme);
        return String.format("redirect:/cert_prog/%s/edit", certId);
    }

오류

    2017-02-25 21:40:28.257 ERROR 20769 --- [nio-8080-exec-9] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: Executing an update/delete query; nested exception is javax.persistence.TransactionRequiredException: Executing an update/delete query] with root cause

javax.persistence.TransactionRequiredException: Executing an update/delete query
    at org.hibernate.jpa.spi.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:71) ~[hibernate-entitymanager-4.3.11.Final.jar:4.3.11.Final]
    at org.springframework.data.jpa.repository.query.JpaQueryExecution$ModifyingExecution.doExecute(JpaQueryExecution.java:238) ~[spring-data-jpa-1.9.2.RELEASE.jar:na]
    at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:78) ~[spring-data-jpa-1.9.2.RELEASE.jar:na]
    at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:100) ~[spring-data-jpa-1.9.2.RELEASE.jar:na]
    at or
Jakub Ch.

dao 방법을 수정해야합니다. 고유 한 엔티티의 한 필드를 수정하는 쿼리를 원하는 경우 해당 필드 값과 엔티티 ID 만 메서드에 매개 변수로 전달합니다 (또는 메서드가 항상 플래그를 false로 설정하려는 경우 id 만). 그런 다음 적절한 JPQL 형식으로 쿼리에서 참조하십시오. 이러한 경우의 예는 스프링 데이터 JPA 문서 에서 찾을 수 있습니다.

귀하의 경우에는 다음과 같이 보일 것입니다.

CertificateDAO.java

@Modifying
@Query("update CertificateProgramme ear set ear.flag = FALSE where ear.id = ?1")
int unFlagger(Long id);

ServiceImpl.java

@Override
public CertificateProgramme flag(CertificateProgramme certificateProgramme) {
    certificateDao.unFlagger(certificateProgramme.getId());
    return findOne(certificateProgramme.getId());
}

이것은 작동합니다. CertificateProgramme을 서비스에 전달하는 것을 제거하고 ID 만 전달할 수도 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

단일 쿼리를 사용하여 마지막으로 업데이트 된 행을 가져 오는 방법

분류에서Dev

단일 쿼리를 사용하여 마지막으로 업데이트 된 행을 가져 오는 방법

분류에서Dev

단일 양식을 사용하여 여러 모델을 업데이트하는 방법

분류에서Dev

SpringData JPA @Query 주석을 사용하여 저장소에서 180 일 된 사용자를 쿼리하는 방법

분류에서Dev

단일 쿼리에서 조인 및 집계 함수를 사용하여 테이블의 여러 행을 업데이트하는 방법

분류에서Dev

AngularJS를 사용하여 단일 페이지에있는 여러 양식을 처리하는 방법

분류에서Dev

개미를 사용하여 최신 업데이트 된 단일 파일을 복사하는 방법?

분류에서Dev

SQL Server에서 단일 업데이트 쿼리를 사용하여 테이블의 열 비트 값을 바꾸는 방법

분류에서Dev

단일 쿼리를 사용하여 여러 테이블을 쿼리하는 방법은 무엇입니까?

분류에서Dev

CakePHP를 사용하여 테이블에서 항목의 단일 속성을 업데이트하는 방법

분류에서Dev

레일에 루비 양식을 제출할 때 양식 필드의 일부를 업데이트하는 방법

분류에서Dev

레일에서 하나의 양식을 사용하여 둘 이상의 필드를 업데이트하는 방법

분류에서Dev

단일 mysql 쿼리로 특정 날짜를 기반으로 모든 행을 업데이트하는 방법

분류에서Dev

JSTL, JPA, EJB, JSP, Servlet을 사용하여 JavaEE에서 레코드를 업데이트 및 삭제하는 방법

분류에서Dev

Xamarin 양식의 SQLite를 사용하여 데이터베이스의 항목을 업데이트하는 방법

분류에서Dev

각도 js를 사용하여 업데이트 후 단일 행을 새로 고치는 방법

분류에서Dev

정확히 하나의 레코드를 업데이트하고 단일 db2 쿼리에서 업데이트 된 행을 선택하는 방법

분류에서Dev

PHP와 MySQL을 사용하여 쿼리에서 수행 한 쿼리 결과를 업데이트하는 방법

분류에서Dev

DAO.Recordset을 사용하여 업데이트 할 수없는 쿼리를 사용하여 테이블을 업데이트하는 방법

분류에서Dev

jsp : useBean 작업 단계를 사용하여 양식을 처리하는 방법은 무엇입니까?

분류에서Dev

동적 파일을 사용하여 drake 디렉토리를 업데이트하는 방법

분류에서Dev

여러 행 상위 쿼리 단일 행 반환을 사용하여 하위 쿼리 하위 쿼리를 작성하는 방법

분류에서Dev

IF 조건을 사용할 때 django의 단일 쿼리에서 DB 업데이트를 수행하는 방법은 무엇입니까?

분류에서Dev

간단한 HTML Dom을 사용하여 For 루프에서 단일 쿼리로 MYSQL 데이터베이스에 데이터를 삽입하는 방법

분류에서Dev

PHP를 사용하여 docx 파일의 사용자 정의 속성을 업데이트하는 방법

분류에서Dev

JSP를 사용하여 업로드 된 .csv 파일에서 양식 텍스트 필드를 자동 업데이트하는 방법은 무엇입니까?

분류에서Dev

단일 쿼리에서 여러 사용자 이름을 검색하는 방법

분류에서Dev

yii2를 사용하여 업로드 된 파일을 업데이트하는 방법

분류에서Dev

Python을 사용하여 Mongodb의 단일 문서 내에서 다른 값으로 여러 하위 문서를 업데이트하는 방법

Related 관련 기사

  1. 1

    단일 쿼리를 사용하여 마지막으로 업데이트 된 행을 가져 오는 방법

  2. 2

    단일 쿼리를 사용하여 마지막으로 업데이트 된 행을 가져 오는 방법

  3. 3

    단일 양식을 사용하여 여러 모델을 업데이트하는 방법

  4. 4

    SpringData JPA @Query 주석을 사용하여 저장소에서 180 일 된 사용자를 쿼리하는 방법

  5. 5

    단일 쿼리에서 조인 및 집계 함수를 사용하여 테이블의 여러 행을 업데이트하는 방법

  6. 6

    AngularJS를 사용하여 단일 페이지에있는 여러 양식을 처리하는 방법

  7. 7

    개미를 사용하여 최신 업데이트 된 단일 파일을 복사하는 방법?

  8. 8

    SQL Server에서 단일 업데이트 쿼리를 사용하여 테이블의 열 비트 값을 바꾸는 방법

  9. 9

    단일 쿼리를 사용하여 여러 테이블을 쿼리하는 방법은 무엇입니까?

  10. 10

    CakePHP를 사용하여 테이블에서 항목의 단일 속성을 업데이트하는 방법

  11. 11

    레일에 루비 양식을 제출할 때 양식 필드의 일부를 업데이트하는 방법

  12. 12

    레일에서 하나의 양식을 사용하여 둘 이상의 필드를 업데이트하는 방법

  13. 13

    단일 mysql 쿼리로 특정 날짜를 기반으로 모든 행을 업데이트하는 방법

  14. 14

    JSTL, JPA, EJB, JSP, Servlet을 사용하여 JavaEE에서 레코드를 업데이트 및 삭제하는 방법

  15. 15

    Xamarin 양식의 SQLite를 사용하여 데이터베이스의 항목을 업데이트하는 방법

  16. 16

    각도 js를 사용하여 업데이트 후 단일 행을 새로 고치는 방법

  17. 17

    정확히 하나의 레코드를 업데이트하고 단일 db2 쿼리에서 업데이트 된 행을 선택하는 방법

  18. 18

    PHP와 MySQL을 사용하여 쿼리에서 수행 한 쿼리 결과를 업데이트하는 방법

  19. 19

    DAO.Recordset을 사용하여 업데이트 할 수없는 쿼리를 사용하여 테이블을 업데이트하는 방법

  20. 20

    jsp : useBean 작업 단계를 사용하여 양식을 처리하는 방법은 무엇입니까?

  21. 21

    동적 파일을 사용하여 drake 디렉토리를 업데이트하는 방법

  22. 22

    여러 행 상위 쿼리 단일 행 반환을 사용하여 하위 쿼리 하위 쿼리를 작성하는 방법

  23. 23

    IF 조건을 사용할 때 django의 단일 쿼리에서 DB 업데이트를 수행하는 방법은 무엇입니까?

  24. 24

    간단한 HTML Dom을 사용하여 For 루프에서 단일 쿼리로 MYSQL 데이터베이스에 데이터를 삽입하는 방법

  25. 25

    PHP를 사용하여 docx 파일의 사용자 정의 속성을 업데이트하는 방법

  26. 26

    JSP를 사용하여 업로드 된 .csv 파일에서 양식 텍스트 필드를 자동 업데이트하는 방법은 무엇입니까?

  27. 27

    단일 쿼리에서 여러 사용자 이름을 검색하는 방법

  28. 28

    yii2를 사용하여 업로드 된 파일을 업데이트하는 방법

  29. 29

    Python을 사용하여 Mongodb의 단일 문서 내에서 다른 값으로 여러 하위 문서를 업데이트하는 방법

뜨겁다태그

보관