0

以下のフィールドを持つメインエンティティクラスがあり、患者エンティティクラスを参照するフィールドfinidがあります。:-

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;

患者のエンティティクラス:-

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に一致する患者レルを検索する必要があります。誰でもそのためのアプローチを共有できますか?

4

1 に答える 1

0

ここで、指定されたfinidに一致する患者レルを検索する必要があります。

最初のオプションは、finId によって患者を取得し、次に .getPatientrelCollection() getter メソッドを介して Patientrel コレクションを取得することです。

EntityManager em = ...
Integer findId = 1;

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

 

2 番目のオプションは、Patient エンティティと Patientrel エンティティを結合する JQL クエリを使用して、指定されたfinid に一致する患者レルを「検索」することです。

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();
于 2013-10-05T20:37:03.283 に答える