Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 创建使用LEN或LENGTH函数的常规hibernate查询_Mysql_Sql Server 2008_Hibernate - Fatal编程技术网

Mysql 创建使用LEN或LENGTH函数的常规hibernate查询

Mysql 创建使用LEN或LENGTH函数的常规hibernate查询,mysql,sql-server-2008,hibernate,Mysql,Sql Server 2008,Hibernate,在我的一个数据库服务中,我创建了一个hibernate查询,如下所示: createSQLQuery("SELECT * FROM documentheaders order by LEN(header) DESC").addEntity(Documentheaders.class); 只要我使用MS SQL,这就非常有效。如果我尝试用MYSQL运行这个查询,我会得到一个sql错误,因为在MYSQL中,正确的函数是LENGTH。有没有办法创建一个包含两种方言的单一sql查询(我知道我可以检查数

在我的一个数据库服务中,我创建了一个hibernate查询,如下所示:

createSQLQuery("SELECT * FROM documentheaders order by LEN(header) DESC").addEntity(Documentheaders.class);
只要我使用MS SQL,这就非常有效。如果我尝试用MYSQL运行这个查询,我会得到一个sql错误,因为在MYSQL中,正确的函数是LENGTH。有没有办法创建一个包含两种方言的单一sql查询(我知道我可以检查数据库类型,并对每种数据库使用单独的查询,但我希望有更优雅的方式)

谢谢


Elliott

感谢frictionlesspulley提醒我使用HQL函数。这解决了问题。

HQL中有一个length()函数。您能否改进您的答案以包含完整的解决方案,并提供一个示例。这也将帮助其他人找到您的问题。