기본 질문 :
ManyToOne 필드 x가있는 엔티티 B가 다른 엔티티 A에 연결된 경우 x 필드에 A가있는 B의 인스턴스를 모두 얻으려면 어떻게해야합니까? 더 구체적으로
JPA ManytoOne 관계로 쿼리를 작성하는 방법은 무엇입니까?
:
다음 entites 고려 : 이미이 쿼리는 여기에
Query query = em.createQuery("SELECT m from Message m WHERE m.owner = :us");
준비가
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "USER_ID")
private Key id;
@OneToMany(mappedBy = "owner", cascade = CascadeType.ALL)
private List<Message> messages;
}
ic class Message {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column (name="MESSAGE_ID")
private Key id;
@ManyToOne(fetch = FetchType.LAZY)
private User owner;
private int status;
}
내가 구축하고자하는 방법에 대한 API입니다 :
입력 : 사용자 u, 상태 s
출력 : 소유자 u 및 상태 s 인 모든 메시지 목록.
EntityMenager를 사용하여 쿼리를 작성해야하지만 적절한 구문은 무엇입니까? 이 부분에 무엇을 넣어야합니까? (* "메시지에서 소유자를 선택하십시오. = _ AND status ="+ status *). 나는이 시도 할 때
: 당신은 '을 사용하여 객체 필드에 대해 조회 할 수 있습니다
좋아요,하지만 지금은이 메시지 : "WHERE m.owner.username = 메시지 m 중에서 선택 하위 오브젝트가 포함 된 경우에만 하위 개체의 속성을 참조 할 수 있습니다 : ownerID" –
어떤 종류의 개체의 "username"입니까? – Fil
"username"은 사용자 개체마다 고유 한 문자열입니다. 감사! –