public interface FollowRequestRepository extends JpaRepository<FollowRequest, FollowId>
이런 상황. 아이디가 복합키임.
/**
* 팔로우 ID 엔티티.
*/
@Getter
@Setter
@Embeddable
public class FollowId implements java.io.Serializable {
private static final long serialVersionUID = 4319676048288652083L;
@NotNull
@Column(name = "MEMBER_ID", nullable = false)
private Long memberId;
@NotNull
@Column(name = "FOLLOW_ID", nullable = false)
private Long followId;
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) {
return false;
}
FollowId entity = (FollowId) o;
return Objects.equals(this.followId, entity.followId)
&& Objects.equals(this.memberId, entity.memberId);
}
@Override
public int hashCode() {
return Objects.hash(followId, memberId);
}
}
이렇게 생겼음.
public interface FollowRequestRepository extends JpaRepository<FollowRequest, FollowId>, FollowRequestRepositoryCustom {
// 보낸 사람 기준 팔로우 요청 목록 조회
List<FollowRequest> findAllByToMemberId(long toMemberId);
// 받은 사람 기준 팔로우 요청 목록 조회
List<FollowRequest> findAllByFromMemberId(long fromMemberId);
}
이렇게 인터페이스를 만들어두면 복합키여도 JPA가 followRequest.id.toMemberId
를 내부적으로 인식한다고 함. → 확인필요