【发布时间】:2017-01-18 12:50:57
【问题描述】:
我正在使用 Groovy 对我的数据库进行查询,查询运行良好并返回正确的数据,但是我在终端中收到此错误。
在 Groovy SQL 中,请不要在动态表达式周围使用引号 (以 $ 开头),因为这意味着我们不能使用 JDBC PreparedStatement 等是一个安全漏洞。 Groovy 已经解决了 你的错误,但安全漏洞仍然存在。
这是我的查询
sql.firstRow("""select elem
from site_content,
lateral jsonb_array_elements(content->'playersContainer'->'series') elem
where elem @> '{"id": "${id}"}'
""")
如果我将其更改为 $id 或
sql.firstRow("""select elem
from site_content,
lateral jsonb_array_elements(content->'playersContainer'->'series') elem
where elem @> '{"id": ?}'
""", id)
我收到以下错误
org.postgresql.util.PSQLException:列索引超出范围: 1、列数:0。
【问题讨论】:
-
你能不能试试:
sql.firstRow("""select elem from site_content, lateral jsonb_array_elements(content->'playersContainer'->'series') elem where elem @> '{"id": ?}' """, [id]),[id]而不是id?
标签: mysql postgresql groovy