【发布时间】:2018-02-07 06:30:28
【问题描述】:
我有一个 oracle 数据库。我对表 A 进行了查询,其中 b 列是 CHAR(25 BYTE)。当我通过休眠本机查询创建时
(select t.* from A t where t.b = :b).setParameter("b", "0123456789") 它返回了一个空结果。
当我创建像 (select t.* from A t where t.b = :b).setParameter("b", "0123456789 ") 这样的本机查询时,在“9”之后有 15 个空字符,它会按预期返回一个非空结果。
所以我的问题是——我该怎么做才能用hibernate写一个普通的查询?
谢谢。
【问题讨论】:
-
我看不出你创建的两个查询有什么不同,只是参数的长度不同。
-
@JohnJoe 由于输入参数的长度为 25,因此第二个查询可以正常工作。因此,如果我从我的应用程序 java 代码输入参数发送 10 个符号长度的查询,它不起作用。是否有可能在休眠中以某种方式指示对于此参数,休眠应该将其作为 char 25 或类似的东西发送
-
第二个查询中有两个 3。是这个错字还是你在数据库中有
01233456789的值? -
@JohnJoe 对不起,我在写第二个例子时犯了一个错误。输入参数与第一个代码示例中的相同 - 0123456789,但在“9”之后的第二个示例中,它有 15 个空符号。 '0123456789' - 仅作为输入参数
-
您确定您的查询正确吗?
"select t.* from A t.."对我来说听起来很奇怪
标签: java sql hibernate nativequery