我使用下面的查询来获取一个java.util.Map
,它的索引为id
、text
和object
:
Query q = mySession.createQuery(
"SELECT u.id AS id, u.name AS text, u AS object FROM User u")
.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
...但是object
似乎是保留字。例如obj
就可以。目前在HQL中对 alias 进行转义的方法是什么,就像MySQL使用倒勾转义一样?
使用反勾会产生以下错误:
Exception in thread "main" org.hibernate.QueryException: unexpected char:
'`' [SELECT u.id AS id, u.name AS text, u AS `object` FROM User u]
5条答案
按热度按时间z4bn682m1#
您可以通过使用自定义“别名到Map”转换器的变通方法来实现此目的,因此您的代码将更改为如下所示
然后使用这个类:
kknvjkwl2#
在一个相关的主题中,转义列名中的保留字就像在前面加上表别名一样简单。
签署人:
(note:我并不是说将“where”作为列名是个好主意;- )
6gpjuf903#
这个回跳的概念在Hibernate中是有效的...不幸的是,这只在你做过注解配置的情况下才有效...
您可以尝试以不同的方式(不使用注解)来完成此操作。
这里你需要创建一个构造函数来接受id,name,object元素&的顺序。
uubf1zoe4#
反勾号不适用于别名吗?Hibernate文档中说可以将它们用于字段。
其他问题:
h4cxqtbf5#
好吧,我真的很晚在这个问题上,但由于上述解决方案不为我工作,我想我会张贴的解决方案。
我们的问题是一个名为“row”的字段。取决于xml或注解的解决方案将是:
第一个