반응형
Verification.java
하단의 코드는 Verification Domain 코드이다.
Verification의 경우 ParticipationChallenge를 객체로 가지고 있다.
이때 Spring Data JPA의 파생된 쿼리 메서드 명명 규칙에 따라 VerificationRepository에서 ParticipationChallenge의 id 값을 불러오려면 어떻게 해야할까?
@Entity
@Getter
@NoArgsConstructor
public class Verification {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String image;
@Enumerated(EnumType.STRING)
@Column(nullable = false)
@ColumnDefault("'WAITING'")
private VerificationState state;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "participation_challenge_id")
private ParticipationChallenge participationChallenge;
@Builder
public Verification(String image, VerificationState state, ParticipationChallenge participationChallenge) {
this.image = image;
this.state = state;
this.participationChallenge = participationChallenge;
}
}
VerificationRepository.java
하단에서와 같이 '객체_참조하려는속성'과 같이 작성하면 된다.
하단의 함수를 참고하면 ParticipationChallenge의 Id 속성에 접근하고자 ParticipationChallenge_Id로 접근한 것이다.
이때 언더바(_)를 삭제하면, ParticipationChallenge의 속성인 Id 값을 불러오는 게 아닌 Verification에서 ParticipationChallengeId라는 Column을 찾는다는 것을 의미한다.
따라서 객체의 속성에 접근할 시 _를 꼭 작성해줘야 한다.
@Repository
public interface VerificationRepository extends JpaRepository<Verification, Long> {
Long countByParticipationChallenge_IdAndState(Long participationChallengeId, VerificationState state); // 동일한 참여 챌린지의 인증 상태가 state인 인증 개수를 찾는 함수
}
빌드 에러 발생
실제 Camel Case를 사용하자는 코드 컨벤션에 따라 언더바를 지웠다가 빌드 에러가 발생했었다...
코드를 잘 알고 작성하도록 하자!
반응형
'Java > Spring' 카테고리의 다른 글
[Spring] OAuth2 소셜 로그인 후 Postman에서 Session 설정하기 (0) | 2023.09.30 |
---|---|
[Spring] Spring Security에서 발생한 403 Forbidden 에러 처리 (0) | 2023.09.26 |
[Spring Security] 소셜로그인 시 404 에러 해결 (0) | 2023.09.10 |
[Spring] h2 데이터베이스를 사용해보자! (0) | 2023.06.19 |
[JPA] 쿼리 파라미터 로그 남기는 법 (1) | 2023.06.01 |