小编pea*_*ach的帖子

如果双方都是联合实体,那么where子句中的条件顺序是否相关?

我们对数据库有两个查询,唯一的区别是OR子句中条件的顺序.

相同结构的查询在另一个数据库上的类似数据集上工作正常.我们正在合作Oracle 12.2.

Bestand表有两个连接的实体,其中任何一个总是被填充.在我们的例子中,文章KbArticle始终是连接的null.在我们的一个查询中,我们得到了文章id适用的所有结果,而在另一种情况下我们没有.所有Bestand实体都满足最后两个条件(cod_lbr = 12, flg_sperre = 0)

SELECT bestand0_.*
FROM tbl_bestand bestand0_
LEFT OUTER JOIN tbl_kb_artikel customeror1_
ON bestand0_.id_kb_artikel=customeror1_.id_kb_artikel
LEFT OUTER JOIN tbl_artikel article2_
ON bestand0_.id_artikel          =article2_.id_artikel
WHERE (customeror1_.id_kb_artikel=3017874 OR article2_.id_artikel          =3017874)
AND bestand0_.cod_lbr            =12
AND NVL(bestand0_.flg_sperre,0)  = 0;
Run Code Online (Sandbox Code Playgroud)

产生结果 链接到解释计划

SELECT bestand0_.*
FROM tbl_bestand bestand0_
LEFT OUTER JOIN tbl_kb_artikel customeror1_
ON bestand0_.id_kb_artikel=customeror1_.id_kb_artikel
LEFT OUTER JOIN tbl_artikel article2_
ON bestand0_.id_artikel          =article2_.id_artikel
WHERE (article2_.id_artikel          =3017874 OR customeror1_.id_kb_artikel=3017874)
AND …
Run Code Online (Sandbox Code Playgroud)

sql oracle

8
推荐指数
1
解决办法
149
查看次数

HQL-命名参数为左侧

从1.5.13升级到2.0.2的Spring Boot升级后,我们的某些HQL查询失败,并显示“ Parameter [myParameter] not bound”。在这两种情况下,我们都使用了Hibernate 5.2.12。

仔细查看后,我发现所有失败的查询都在比较的左侧使用了命名参数。

所以

@Query("select a from MyEntity a where :name = a.name") List<MyEntity> findByName (@Param("name") String name);

在Spring Boot 1.5.13上工作,但在Spring Boot 2.0.2上失败了,但是

@Query("select a from MyEntity a where a.name = :name") List<MyEntity> findByName (@Param("name") String name);

都在工作。

有人可以解释这种行为吗?我在文档中找不到解释。

我得到的完整Stacktrace是:

[2018-06-19 23:06:21.934] ERROR [http-nio-8080-exec-2] [] [] --- o.a.c.c.C.[.[.[.[dispatcherServlet]: Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: Named parameter [codLbrX] not set; nested exception is org.hibernate.QueryException: …
Run Code Online (Sandbox Code Playgroud)

hibernate hql spring-data spring-data-jpa spring-boot

5
推荐指数
0
解决办法
319
查看次数