我有以下JPQL查询
SELECT g
FROM MyEntity g
WHERE g.fieldA = :parA
AND (g.pk.fieldB = :parB
OR ' ' = :parB )
经过一些试验,我明白了问题是
OR ' ' = :parB
假设fieldB在数据库中定义为CHAR 3。
如果我使用
parB = " "
查询按预期工作,但如果
parB = "abc"
我得到一个SQL错误( DB2错误CODE -302:输入变量或参数号的值位置编号对于目标列或目标值无效或太大)
我可以想象问题在于' '与" abc"相比,我真正理解的是为什么..我复制了生成的sql,如果我使用例如Squirrel SQL执行它,它的效果很好:
OR ' ' = 'abc'
没有任何问题。
您能否解释一下在准备查询时字符串会发生什么?是否可以调整此查询?
提前致谢!