JPA createNativeQuery not mapping to Entity class
我正在尝试使用createNativeQuery从数据库中获取结果集并将其映射到Entity对象列表。
当我这样做
1 | List<MyObject> results = this.em.createNativeQuery(query, MyClass.class).getResultList(); |
我最终得到了一个正确大小的Entity对象数组,并正确地映射到了列,但是它们都是相同的对象。返回的第一个结果将对列表中的每个条目重复。
在上图中,您可以看到我取回了数据,并且如果我检查ovbject,它们将正确映射到我的列中。但是它们都是同一个对象。
但是如果我这样做
我得到了应有的不同对象的列表。但是它们没有映射到我的Entity类。
在上图中,您可以看到,当我使用
有人知道是什么原因导致我每次都获得相同对象的列表吗?
我的查询是从存储过程中的管道函数中选择的
1 |
更新
我在过程中调用的管道函数返回大约200行。出于测试目的,我仅映射了前几列。
"我的实体"类具有200个列中前13个列的列映射。
我的调用该函数的查询正在执行
我的结论是,必须阻止Hibernate遍历管道函数的结果集。它返回正确的行数,但是卡在第一行,只是一遍又一遍地创建该对象。
该问题似乎与我的列映射无关
解决了。
事实证明,我只是不专心致志而已。
在我的Entity类中,我的
将我的
您能否尝试提供明确的结果集映射
1 2 3 | @SqlResultSetMapping( name="myMapping", entities={@EntityResult(entityClass=MyClass.class)} |
然后
1 | em.createNativeQuery(query,"myMapping").getResultList(); |
您是否尝试过使用类似的东西?
1 2 3 4 5 | StoredProcedureQuery q = em.createStoredProcedureQuery("stored_procedure_name"); q.registerStoredProcedureParameter("empList", something.class, ParameterMode.REF_CURSOR); List<MyObject> myObj= (List<>)q.getOutputParameterValue("paramValue"); // ... |