相同查询在从JPA执行或直接在DB中执行时表现不同

时间:2014-08-07 07:49:10

标签: jpa db2

我有以下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' 

没有任何问题。

您能否解释一下在准备查询时字符串会发生什么?是否可以调整此查询?

提前致谢!

0 个答案:

没有答案