参数前缀“:”后不允许有空格

2024-03-20

我的问题是我尝试在查询中插入包含 char : 的文本

我尝试在 char : 之前添加双反斜杠 // 但仍然不起作用。

ABNORMALLY.java.lang.IllegalArgumentException: 
org.hibernate.QueryException: Space is not allowed after parameter prefix ':' 

INSERT INTO TABLE_A  (A_ID, TYPE_ID, F_ID, REFNO, RECORD) VALUES 
( A_ID_SEQ.nextval, 4 , 9 , 'NY167', q'[LA2010167|SNIP' N CLIP|LMG|1.Unit no\\: 1046, 1 st Floor, Limbang Plaza, 98700 Limbang|2010-12-10||]')

根据我的经验我会告诉你。有两种情况
1) 您想要在查询中指定一个参数,其值动态设置。

eg: where user_id = :userId

在这里,如果您设置与“userId”同名的参数,则不会出现任何问题;
2)您正在对值进行类型转换

eg: select count(id) :: integer

当你这样做时,你必须使用转义字符,否则休眠会认为它是一个参数。它会给出一个错误“所有参数均未设置”您可以通过使用转义字符编写代码来克服这个问题

eg:select count(id) \\:\\: integer

所以这将解决你的问题。 如果你错误地使用了正斜杠而不是反斜杠,你会得到错误“前缀后不允许有空格”

Wrong: select count(id)//://: integer
Right: select count(id)\\:\\: integer

但我强烈建议您使用 CAST 函数而不是使用"::"这个操作员 IEselect CAST(count(id) as integer)这是更好的类型转换方法,并且会导致最小的错误

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

参数前缀“:”后不允许有空格 的相关文章

随机推荐