hibernate中的交叉连接问题
我一直在 Spring 2.5 的 J2EE 应用程序中使用 Hibernate 3.2。最近我想要 hibernate 3.5 的一个功能(BigInt Identity 支持)。所以我升级了我的 hibernate,现在我的查询遇到了不同的问题。
HQL 查询:-
select table from tableVO table where tableVO.subTableVO.id=:tableVO.id
SQL 查询:-
select table_1_ID from table cross join subTable where subTable.id =table.id
我看到交叉联接是由 hibernate 完成的,而 Sybase ASE 不接受该交叉联接。我该如何解决这个问题?
I have been using Hibernate 3.2 intailly for my J2EE application with Spring 2.5.Recently I wanted a feature of hibernate 3.5(BigInt Identity support).So I have upgraded my hibernate and now I facing a different issue with my queries.
HQL Query:-
select table from tableVO table where tableVO.subTableVO.id=:tableVO.id
SQL Query:-
select table_1_ID from table cross join subTable where subTable.id =table.id
I see that cross join is being done by hibernate which is not accepted by Sybase ASE. How can I fix this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
检查您在休眠配置中设置的方言。我假设您正在 Sybase ASE 15.x 上运行。正如您所发现的,Sybase 尚不支持 CROSS JOIN,而 SybaseDialect 试图使用 CROSS JOIN。相反,请使用 SybaseASE157Dialect 或 SybaseASE15Dialect。它将生成如下所示的语法:
Check the dialect you have set in hibernate configuration. I'm going to assume you're running on Sybase ASE 15.x. As you found out, Sybase does not (yet) support CROSS JOIN, which is what the SybaseDialect attempts to use. Instead, use SybaseASE157Dialect or SybaseASE15Dialect. It will generate syntax that should look like:
您可以更改 hibernate dialect,
在方言类的hibernate.cfg 中
,您应该输入要执行的语法。
DB2 的示例方言更改
希望这有帮助
You can change hibernate dialect,
in hibernate.cfg
in your dialect class you should enter the syntax you want executed.
example dialect change for DB2
Hope this helps
这是 Hibernate 中隐式连接的一个错误。您可以通过为连接添加别名来修复它:
This is a bug with implicit joins in Hibernate. You can fix it by aliasing your joins: