私は 2 つの Entity 、Entity Applicants、Entity JobApplications を持っています。関係は
//Entity Applicants
public class AppPers implements Serializable {
@OneToMany(cascade = CascadeType.ALL, mappedBy = "appPers",fetch = FetchType.EAGER)
private Collection<JobApplications> jobApplicationsCollection;
.........................
}
//Entity JobApplications
public class JobApplications implements Serializable {
@JoinColumn(name = "app_id", referencedColumnName = "APP_ID", insertable = false, updatable = false)
@ManyToOne(optional = false,fetch = FetchType.EAGER)
private AppPers appPers;
だから合併したら
AppPers ap =em.find(AppPers.class,appId);
ap.setJobApplicationsCollection(c);
em.merge(ap);
em.refresh(ap);
そして実行してみる
//fetch the newly created list
List<JobApplications> list = new ArrayList<JobApplications>();
list = em.createNamedQuery("JobApplications.findAll").getResultList();
//list size is 3 in my case
for( JobApplications ja: list) {
String a = ja.getAppPers().getSurName();
}
surName が AppPers の列であるため、NullPointer Exception が発生します。これは、Glassfish を再起動するまで発生し、Null ポインターは発生しません。fetch を Eager に設定しようとしましたが、それでも喜びはありません。何が欠けているのでしょうか