Scala查询生成无效的SQL

时间:2012-06-01 12:39:14

标签: scala scalaquery

我正在使用scalaquery连接到oracle和postgres服务器。 Oracle和Postgres都会出现这种情况,但它只在Postgres中有效(并且仍然不正确)。

在某些时候,我正在使用以下形式的scalaquery运行查询:

row.foo.bind == parameter.foo || row.foo inSetBind parameter.foo.children

参数是一个特征,已知其中有一个foo。

这里的问题是,在运行~100次查询中,scala-query只生成一次正确的SQL,格式为

...
WHERE row.foo = ? or row.foo in (?, ?, ?, ?, ?)
...

大部分时间它会生成

...
WHERE row.foo = ? or false
...

为什么这种情况不一致,这是一个错误(我认为是这样),我该如何解决它?

1 个答案:

答案 0 :(得分:1)

事实证明,查询正在查看一个空集,因为在大多数情况下parameter.foo没有孩子。

鉴于WHERE row.foo IN ()不是有效的SQL,它被写为false

尽管代码以oracle DB为目标,但仍会产生false的问题,但根本原因现已被清除。