나는 다음과 같은 요소를 가지고 관계의 두 측면에서 선택한 속성에 대한 조회하는 방법에 대한 도움을 요청하고 싶습니다. 여기 내 모델입니다. 모든 테이블이 제대로 DB에 생성됩니다 가정합니다. 내가 사용하고 JPA 공급자가 최대 절전 모드입니다.한 널 (NULL) 관계로 많은 JPA 쿼리
@Entity
public class Book{
@Id
private long id;
@Column(nullable = false)
private String ISBNCode;
@ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY, optional = false)
private Person<Author> author;
@ManyToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY, optional = true)
private Person<Borrower> borrower;
}
@Inheritance
@DiscriminatorColumn(name = "personType")
public abstract class Person<T>{
@Id
private long id;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Info information;
}
@Entity
@DiscriminatorValue(PersonType.Author)
public class Author extends Person<Author> {
private long copiesSold;
}
@Entity
@DiscriminatorValue(PersonType.Borrower)
public class Borrower extends Person<Borrower> {
.....
}
@Entity
public class Info {
@Id
private long id;
@Column(nullable=false)
private String firstName;
@Column(nullable=false)
private String lastName;
......;
}
당신이 볼 수 있듯이,이 책 테이블은 Null을 허용 한 널 (NULL)없는 사람의 관계와 사람에 대한 많은있다. 나는이 날은 내가 원하는 것이 속성을 선택할 수 있도록하는 JPA 쿼리를 쓸 수있는 방법
ISBNCode - First Name - Last Name - Person Type
-
은 내가 표 형식으로 다음, 보여줄 수있는 요구 사항을 가지고있다. 나는 책에서 속성 ISBN 코드를 얻으려면, 다음 제 차례로 도서 객체에 관련되는 사람 개체와 관련된 정보 객체에서 성과 이름 것입니다. 나는 정보 객체,이 경우 예 : 이름과 성 관심 선택된 정보에서 모든 정보를 얻을 싶지 않을 것이다.
차용자와 책의 관계에는 optional = true가 표시되어 있습니다. 이는 누군가 (아직 작성자가 분명히 있음)가 아직 빌려 가지 않은 책이 있음을 의미합니다.