Job Entity
@ManyToMany @NotFound(action = NotFoundAction.IGNORE) @JoinTable(name="JOB_ACTIVITES", joinColumns=@JoinColumn(name="jobId"), inverseJoinColumns=@JoinColumn(name="an")) private Collection<Activity> activities; Activity Entity
@OneToOne(fetch = FetchType.LAZY) @JoinColumns(value = { @JoinColumn(name = "dwgNo", referencedColumnName = "dwgNo"), @JoinColumn(name = "rev", referencedColumnName = "rev") }) private Drawing drawing; Query
public List<Activity> getActivitiesByJobId(Long jobId) { String criteria = "SELECT jb.activities FROM Job jb WHERE jb.jobId=:jobId"; List<Activity> activities = em.createQuery(criteria).setParameter("jobId", Long.valueOf(jobId)).getResultList(); return activities; } Error
javax.el.ELException: /job.xhtml value="#{activity.drawing.dwgNo}": org.hibernate.LazyInitializationException: could not initialize proxy - no Session
I understand the error, But I don't know how to modify my query to join the Drawing entity.
Something like
SELECT jb.activities FROM Job jb LEFT JOIN FETCH Drawing ON ACTIVITY.dwgNo=Drawing.drwNo WHERE jb.jobId=:jobId"; but that syntax is more like native SQL. How do you specify the path on a collection?