Hello I've two JPA-Entities (OpenJPA 2.2.0): Task and TaskState. TaskState have a foreign key on Task. Therefore I marked the relation TaskState.getTask() as Lazy. The relation opposite Task.getTaskState() is Lazy too (Default for OneToMany). So when I write a JPQL like that in an EJB both relations are filled: SELECT t FROM Task t LEFT JOIN FETCH t.TaskState
With that query both relations are filled. But the relation TaskState.getTask() should be lazy and not filled. The problem is, that that query result-list-object is very big, because of the bi-directional: Task have x TaksState -> TaskState have the Task -> Task have x TaksState -> and so one. Is there a way, to prevent the loading/filling of TaskState.getTask()? Would be great, if someone could help me. @Entity public class Task implements Serializable { private static final long serialVersionUID = 1L; public Task() {} // ... private List<TaskState> TaskState; @OneToMany(mappedBy = "task") public List<TaskState> getTaskState() { return TaskState; } public void setTaskState(final List<TaskState> TaskState) { this.TaskState = TaskState; } } @Entity public class TaskState implements Serializable, Comparable<TaskState> { private static final long serialVersionUID = 1L; public TaskState() {} private Task task; @ManyToOne(fetch = FetchType.LAZY) @javax.persistence.JoinColumn(name = "state_task_Id", referencedColumnName = "task_Id", nullable = false) public Task getTask() { return task; } public void setTask(final Task task) { this.task = task; } } // EJB public Collection<Task> findAllTasks() throws BBException { try { Query query = em.createQuery("SELECT t FROM Task t LEFT JOIN FETCH t.TaskState"); Collection<Task> tasks = query.getResultList(); return tasks; // Why are the tasks on TaskState.getTaskState() are also filled with Tasks-Objects? } catch (Exception ex) { throw new BBException(ex); } }