私の JPA クエリは、次のように CriteriaQuery と CriteriaBuilder を使用して作成されます。
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<TaskInfo> cq = cb.createQuery(TaskInfo.class);
Root<TaskInfo> from = cq.from(TaskInfo.class);
cq.select(from);
...
from.get("task").get("id").in(taskList)
...
オブジェクトのグラフ全体を熱心にロードして、後で JPA セッションを閉じたときにオブジェクトの代わりにプロキシを使用しないようにしたいと考えています。オブジェクト X まで TaskInfo->Task->TaskData-> など。 .
それを行う方法はこれです
for(TaskInfo ti : tiList){
ti.getTask().getTaskData().getSomethingElse().getX();
}
しかし、これはひどいですよね?そして、フェッチング全般を変更したくはありませんが、この特定のクエリに対してのみ変更します。どうすればいいですか?感謝と乾杯
助けてくれてありがとう。しかし、タスクにはプロパティがあります
PeopleAssignments peopleAssignments
PeopleAssignments にはプロパティがあります
List<OrganizationalEntity> businessAdministrators
だからこれはうまくいく
from.fetch("task").fetch("peopleAssignments") // Returns a SingularAttributeJoin
しかし、私がこれを行うと
from.fetch("task").fetch("peopleAssignments").fetch("businessAdministrators")
私は得る:
java.lang.ClassCastException: org.hibernate.ejb.metamodel.SingularAttributeImpl は javax.persistence.metamodel.ManagedType にキャストできません
今回はListを取得しようとしているからだと思います。これを修正する方法を知っていますか?