반응형
QueryMethod (Repository 사용자 변형)
PK값이 두개일때 FK가 걸려있는 컬럼을 이용해서 모두 지우려 할경우 JPA 에서는 데이터를 조회 한후 삭제 하기 때문에
삭제할 데이터가 없다는 오류메세지를 주고, 익셉션이 발생한다,
이때 사용자 변형 쿼리를 이용해서 사용하면 해결 가능하다.
findByUserId(fieldName)
deleteByUserIdAnd{fieldName}
@Eembedable 로 Muilti PK 사용시
PK값을 두개를 사용하기 때문에 @Embededable , Id 를 이용하는데 이때는 {PKClass}_AttributeName으로 사용한다.
Embededable Class 를 사용하여 FindBy, Delete By 사용시.
findByPersionPK_userIdAnd....(String userId)
deleteByPersionPK_userIdAnd....(String userId)
public interface CampaignJpaRepository extends JpaRepository<CampaignEntity, CampaignPK>, QuerydslPredicateExecutor<CampaignEntity> {
List<CampaignEntity> findByCampaignPKMediaId(String mediaId);
}
주의사항
JPA Query 사용시 @query
Update 문 Delete 문 은 @Modify 와 @Transaction 을 걸어 주어야 한다.
JPA2 부터는 @Transaction만 선언
반응형
'Spring > Spring Data JPA' 카테고리의 다른 글
Jpa JSON 순환참조 @ResponseBody (0) | 2017.09.21 |
---|---|
JPA foreign key 생성(@MapsId @ManyToOne) (0) | 2016.11.29 |
Spring JPA Hibernate Embeddable(PK composite) (0) | 2015.11.30 |
Spring Data JPA / QueryDSL (0) | 2015.11.17 |
Spring DATA JPA / Hibernate (0) | 2015.01.06 |