[SPRING] 스프링 데이터 JPA 내장 객체 속성으로 찾기
SPRING스프링 데이터 JPA 내장 객체 속성으로 찾기
엔티티에서 임베디드 오브젝트의 특성을 가진 엔티티를 찾을 수있게 해주는 스프링 데이터 JPA 저장소 인터페이스 메소드 서명을 작성하려고합니다. 아무도 이것이 가능한지 알고 있습니까? 그렇다면 어떻게됩니까?
내 코드는 다음과 같습니다.
@Entity
@Table(name = "BOOK_UPDATE_QUEUE", indexes = { uniqueConstraints = @UniqueConstraint(columnNames = {
"bookId", "region" }, name = "UK01_BOOK_UPDATE_QUEUE"))
public class QueuedBook implements Serializable {
@Embedded
@NotNull
private BookId bookId;
...
}
@Embeddable
public class BookId implements Serializable {
@NotNull
@Size(min=1, max=40)
private String bookId;
@NotNull
@Enumerated(EnumType.STRING)
private Region region;
...
}
public interface QueuedBookRepo extends JpaRepository<QueuedBook, Long> {
//I'd like to write a method like this, but can't figure out how to search by region,
//when region is actually a part of the embedded BookId
Page<QueuedBook> findByRegion(Region region, Pageable pageable);
}
스프링 데이터를 사용하여 이에 대한 쿼리를 작성할 수 있습니까?
해결법
-
==============================
1.이 메소드 이름은 트릭을 수행해야합니다.
이 메소드 이름은 트릭을 수행해야합니다.
Page<QueuedBook> findByBookIdRegion(Region region, Pageable pageable);
참조 문서의 쿼리 파생에 대한 섹션에서 자세한 내용을 확인하십시오.
-
==============================
2.위의 findByBookIdRegion ()은 나에게 적합하지 않았습니다. 다음은 최신 버전의 String Data JPA에서 작동합니다.
위의 findByBookIdRegion ()은 나에게 적합하지 않았습니다. 다음은 최신 버전의 String Data JPA에서 작동합니다.
Page<QueuedBook> findByBookId_Region(Region region, Pageable pageable);
-
==============================
3.BookId를 조합 된 기본 키로 사용하는 경우 다음에서 인터페이스를 변경해야합니다.
BookId를 조합 된 기본 키로 사용하는 경우 다음에서 인터페이스를 변경해야합니다.
public interface QueuedBookRepo extends JpaRepository<QueuedBook, Long> {
에:
public interface QueuedBookRepo extends JpaRepository<QueuedBook, BookId> {
그리고 QueuedBook 클래스에서 @Embedded 주석을 @EmbeddedId로 변경하십시오.
public class QueuedBook implements Serializable { @EmbeddedId @NotNull private BookId bookId; ...
from https://stackoverflow.com/questions/24441411/spring-data-jpa-find-by-embedded-object-property by cc-by-sa and MIT license