2013-10-05 5 views
0

환자 엔티티 클래스를 참조하는 필드 finid가있는 아래 필드가있는 주 엔티티 클래스가 있습니다. - 환자의선택 쿼리에서 JoinColumn 필드 사용

public class Patientrel implements Serializable { 
@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Basic(optional = false) 
@Column(name = "patientrelid") 
private Long patientrelid; 
@Column(name = "entrydate") 
@Temporal(TemporalType.TIMESTAMP) 
private Date entrydate; 
@JoinColumn(name = "finid", referencedColumnName = "fin_id") 
@ManyToOne 
private Patient finid; 

Entity 클래스 : -

public class Patient implements Serializable { 
private static final long serialVersionUID = 1L; 
@Id 
@Basic(optional = false) 
@NotNull 
@Column(name = "fin_id") 
private Integer finId; 
@Size(max = 100) 
@Column(name = "patient_name") 
private String patientName; 
@OneToMany(mappedBy = "finid") 
private Collection<Patientrel> patientrelCollection; 

지금 나는 주어진 finid 일치 patientrel를 검색 할 필요가있다. 누구든지 그 접근 방식을 공유 할 수 있습니까?

답변

0

이제 지정된 finid와 일치하는 patientrel을 검색해야합니다.

첫 번째 옵션은 finId로 환자를 얻을, 다음 .getPatientrelCollection 스루 Patientrel 수집을 검색하는 것입니다() getter 메소드 :

EntityManager em = ... 
Integer findId = 1; 

Patient patient = em.find(Patient.class, findId); 
Collection<Patientrel> patientrelCollection = patient.getPatientrelCollection(); 

 

두 번째 옵션은 JQL을 사용하는 것입니다 주어진 finid와 일치하는 patientrels를 "검색"하기 위해 Patient 및 Patientrel 엔티티를 조인하는 질의 :

EntityManager em = ... 
Integer findId = 1; 

Query q = entityManager.createQuery(
    "SELECT prel FROM " + Patient.class.getName() + "p " + 
    "join p.patientrelCollection prel " + 
    "WHERE p.finId = :id"); 
q.setParameter("id", findId); 

List<Patientrel> patientrel = (List<Patientrel>)q.getResultList(); 
+0

추측 된 질문으로 나는 분명하지 않았다. 내가 원하는 것은 주어진 finid와 일치하는 patientrel 목록을 얻는 것입니다. 이제는 참모가 테이블 환자에게 외래 키로 피니시를합니다. –

+0

나는 나의 대답을 편집했다. –