首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >hibernate中的交叉联接问题

hibernate中的交叉联接问题
EN

Stack Overflow用户
提问于 2011-01-31 15:43:22
回答 3查看 4K关注 0票数 4

最近,我想要Hibernate 3.5(BigInt Identity Support)的一个特性,我已经升级了hibernate,现在我的查询遇到了一个不同的问题。

HQL查询:-

代码语言:javascript
复制
select table from tableVO table where tableVO.subTableVO.id=:tableVO.id 

SQL查询:-

代码语言:javascript
复制
select table_1_ID from table cross join subTable where subTable.id =table.id

我看到交叉连接是由hibernate完成的,这是Sybase ASE不接受的。我该如何解决这个问题呢?

EN

回答 3

Stack Overflow用户

发布于 2012-11-30 04:33:46

检查您在hibernate配置中设置的方言。我假设你运行的是Sybase ASE 15.x。正如您所发现的,Sybase (目前)还不支持交叉联接,而这正是SybaseDialect试图使用的。相反,请使用SybaseASE157DialectSybaseASE15Dialect。它将生成如下所示的语法:

代码语言:javascript
复制
select table_1_ID from table, subTable where subTable.id =table.id
票数 3
EN

Stack Overflow用户

发布于 2011-01-31 16:28:24

您可以更改hibernate方言

hibernate.cfg

代码语言:javascript
复制
<property name="hibernate.dialect">com.YourProject.YourDialect</property>

在方言类中,您应该输入要执行的语法。

示例DB2的方言更改

代码语言:javascript
复制
public class DB2390Dialect extends DB2Dialect 
{

    public String getIdentitySelectString() {
        return "select identity_val_local() from sysibm.sysdummy1";
    }...
}

希望这能有所帮助

票数 1
EN

Stack Overflow用户

发布于 2012-12-01 04:41:14

这是Hibernate中隐式连接的错误。您可以通过为连接添加别名来修复它:

代码语言:javascript
复制
select table from tableVO table
join tableVO.subtableVO subtable
where subtable.id=:tableVO.id 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4848629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档