Hibernate 4.2.4 - 返回多个实体:错误 SqlExceptionHelper:147 - 未知转义序列 {a.*}
Hibernate 4.2.4 - Returning multiple entities: ERROR SqlExceptionHelper:147 - unknown escape sequence {a.*}
我在尝试通过休眠 return 多个实体时遇到错误。根据文档,我尝试了以下 select 语句:
sess.createSQLQuery("SELECT {a.*}, {b.*} FROM A a LEFT OUTER JOIN B b").addEntity(A.class).addEntity(B.class)
不幸的是它对我不起作用,我收到这个错误:
ERROR SqlExceptionHelper:147 - unknown escape sequence {a.*}
只是为了确保它不仅仅是 {table.*}-syntax 我用一个实体和相同的语法尝试了它并且一切正常:
sess.createSQLQuery("SELECT {a.*} FROM A a ).addEntity(A.class)
你有什么想法吗?预先感谢您的提示和建议!
此致,
文森特
P.S.: 休眠版本 4.2.4
数据库是 MariaDb 10.1.22
@Eugene 帮助我解决了这个问题,如果你这样做的话它会起作用:
sess.createSQLQuery("SELECT {a.*}, {b.*} FROM A a LEFT OUTER JOIN B b on b.ida = a.id").addEntity("a", A.class).addEntity("b", B.class)
我的错误假设:
- Hibernate 自行处理连接列(缺少
on b.ida = a.id
)
- 只有添加实体的顺序才是决定性的(
addEntity(A.class)
而不是 addEntity("a", A.class)
)
由于缺少 on b.ida = a.id
而导致的缺失位。现在为什么 unknown escape sequence
?可能是因为查询本身的完整性验证器失败了。
我在尝试通过休眠 return 多个实体时遇到错误。根据文档,我尝试了以下 select 语句:
sess.createSQLQuery("SELECT {a.*}, {b.*} FROM A a LEFT OUTER JOIN B b").addEntity(A.class).addEntity(B.class)
不幸的是它对我不起作用,我收到这个错误:
ERROR SqlExceptionHelper:147 - unknown escape sequence {a.*}
只是为了确保它不仅仅是 {table.*}-syntax 我用一个实体和相同的语法尝试了它并且一切正常:
sess.createSQLQuery("SELECT {a.*} FROM A a ).addEntity(A.class)
你有什么想法吗?预先感谢您的提示和建议!
此致, 文森特
P.S.: 休眠版本 4.2.4 数据库是 MariaDb 10.1.22
@Eugene 帮助我解决了这个问题,如果你这样做的话它会起作用:
sess.createSQLQuery("SELECT {a.*}, {b.*} FROM A a LEFT OUTER JOIN B b on b.ida = a.id").addEntity("a", A.class).addEntity("b", B.class)
我的错误假设:
- Hibernate 自行处理连接列(缺少
on b.ida = a.id
) - 只有添加实体的顺序才是决定性的(
addEntity(A.class)
而不是addEntity("a", A.class)
)
由于缺少 on b.ida = a.id
而导致的缺失位。现在为什么 unknown escape sequence
?可能是因为查询本身的完整性验证器失败了。