最近,我想要Hibernate 3.5(BigInt Identity Support)的一个特性,我已经升级了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不接受的。我该如何解决这个问题呢?
发布于 2012-11-30 04:33:46
检查您在hibernate配置中设置的方言。我假设你运行的是Sybase ASE 15.x。正如您所发现的,Sybase (目前)还不支持交叉联接,而这正是SybaseDialect试图使用的。相反,请使用SybaseASE157Dialect或SybaseASE15Dialect。它将生成如下所示的语法:
select table_1_ID from table, subTable where subTable.id =table.id发布于 2011-01-31 16:28:24
您可以更改hibernate方言,
在hibernate.cfg中
<property name="hibernate.dialect">com.YourProject.YourDialect</property>在方言类中,您应该输入要执行的语法。
示例DB2的方言更改
public class DB2390Dialect extends DB2Dialect
{
public String getIdentitySelectString() {
return "select identity_val_local() from sysibm.sysdummy1";
}...
}希望这能有所帮助
发布于 2012-12-01 04:41:14
这是Hibernate中隐式连接的错误。您可以通过为连接添加别名来修复它:
select table from tableVO table
join tableVO.subtableVO subtable
where subtable.id=:tableVO.id https://stackoverflow.com/questions/4848629
复制相似问题