微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JPQL视图返回重复项

如何解决JPQL视图返回重复项

| 我已经基于在数据库上设置的视图创建了Java实体(在Eclipse中)。实体的设置可以在我的glassfish服务器上测试,也可以通过我正在运行的flex应用程序进行测试,该应用程序引用其中部署的Web服务中的方法和类。 唯一的问题是行数正确,但是返回的值都是重复的!我无法理解为什么会发生这种情况,除了在网络上引用视图外,几乎没有发现引用网络视图之外的任何内容……它确实可以,但是它返回重复项! 作为测试,我创建了一个具有与视图相同的所有列/数据等的表,并将JPA实体指向该表-瞧,没有重复! 有人知道我在做什么错吗? 这是代码
EntityManager em = null;
BigDecimal pId = new BigDecimal(conId);


try {
em = emf.createEntityManager();
String applicationQueryString = \"select c from Vdisc c where c.dCorId = :conId\";

Query contdetQuery = em.createquery(applicationQueryString);
contdetQuery.setParameter(\"conId\",pId);

List list = contdetQuery.getResultList();
Vdisciplines[] disc = new Vdisciplines[list.size()];
disc = (Vdisciplines[]) list.toArray(disc);

return disc;
    

解决方法

您是如何将实体映射到视图的?您定义的ID是什么?另外,您如何定义/执行查询? 如果您将某个字段定义为唯一的ID,那么对于同一ID,您将获得重复的对象。 您可以尝试对原始数据使用本机SQL查询,以确保从数据库正确返回了原始数据。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。