У меня есть две сущности в отношениях один ко многим. Я пытаюсь присоединиться к коллекции сущностей, но не могу понять, как использовать фреймворк. Я всегда использовал DetachedCriteria hibernate, но это больше не вариант для меня, любая помощь будет здорово.
@Entity
@Table(name = "Project")
public class Project implements Serializable {
....
@OneToMany(cascade = CascadeType.ALL, mappedBy = "project")
private Collection<WorkReport> workReportCollection;
....
@Data
@Entity
@Table(name = "work_report")
public class WorkReport implements Serializable {
@JoinColumn(name = "id_work_report", referencedColumnName = "id_work_report", insertable = false, updatable = false)
@ManyToOne(optional = false)
private Project project;
И я пытаюсь присоединиться к workReportCollection следующим образом, но всегда выдает
LazyInit Exception
при доступе к полю.
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Project> query = builder.createQuery(Project.class);
Root<Project> project = query.from(Project.class);
Predicate idPredicate = builder.equal(project.get("idProject"), idProject);
project.joinCollection("workReportCollection", JoinType.LEFT);
query.where(idPredicate);
TypedQuery<Project> q = em.createQuery(query);
return q.getSingleResult();
Единственное, что работает, - это использовать выборку вместо объединения, но она также извлекает все другие ассоциации, и это слишком много данных.
Как правильно написать объединение с JPA CriteriaBuilder? ИЛИ Должен ли я использовать выборку с какой-то проекцией?