Jpa 查询适用于 Jetty Embedded,但在部署到 Jetty 时不会运行



查询是

em.createQuery("select bp from BlogPost bp WHERE ?1 MEMBER OF bp.categories")
                .setParameter(1, c)
                .getResultList();

在我的集成测试容器中,它运行得很好,它在我代码中的一个自定义Jetty实例上。

然而,当使用gradle jettyRun或jettyRunWar部署时,它无法运行上面的查询,我得到了一个空白的结果集和以下错误。

4528简单警告[1241194115@qtp-739763767-0]openjpa。运行时-提供的用户参数"[1]"与预期参数"[]"不匹配对于准备好的查询"PreparedQuery:[select bp from BlogPost bp在哪里?1个成员的bp类别]->[选择t0.id、t2.id,t2.访问级别,t3.id,t3地址1,t3地址2,t3城市,t3国家,t3.家用电话,t3.移动电话,t3.postal,t3.province,t2.identifier,t2.password_md5,t0.body,t0.dateCreated,t0.date Published,t0.titleFROM BlogPost t0 INNER在t0.id上加入BlogPost _BlogCategory t1=t1.BLOGPOST_ID LEFT OUTER JOIN用户t2 ON t0.author=t2.ID LEFT OUTTER在t2.ContactInfo=t3.id WHERE(t1.CATEGORIES_id为NULL)]".

我可以围绕它编写代码,但MEMBER OF使它简单得多,奇怪的是,根据它在web容器中的部署方式,它的运行方式不同。

这是OpenJpa中的某种bug。

我想,我正在使用JPA,所以让我们切换到hibernate,看看它是如何运行的,hibernate有点严格,迫使我对注释和类的更改可以忽略不计。但20分钟后问题解决了。不仅如此,其他隐藏的问题也得到了解决。

因此,我想我将把Hibernate称为我的解决方案。如果有一个参数、配置或其他什么,也许集体想要这些信息,但我的决心得到了满足。

最新更新