Hibernate的HQL已经支持大多数数据库函数,肯定不能包括所有, 幸运的是Hibernate已经对此做了相应的方案解决, 也就是Dialect中注册数据库函数.具体做法如下,我们以Mysql5为例.(对于不同的数据库去继承不同的数据库方言即可,比如oracle可以去查看hibernate中oracle的dialect)
Mysql 的convert函数,现现在数据库的字符集是utf-8,如果想实现中文排序,就需要用convert(filedName using gbk) 实现,但现有的hibernate的hql不能支持此函数, 我们可以现在Dialect注册一个函数,一样不赞成直接修改Hibernate 的源码, 我们可以扩展一个类,如下代码所示
import org.hibernate.Hibernate;
import org.hibernate.dialect.MySQL5Dialect;
import org.hibernate.dialect.function.SQLFunctionTemplate ;
public class MySQL5LocalDialect extends MySQL5Dialect {
public MySQL5LocalDialect(){
super();
registerFunction("convert", new SQLFunctionTemplate(Hibernate.STRING, "convert(?1 using ?2)") );
}
}
现在applicationContext.xml中或hibernate.hbm.xml中修改
package.MySQL5LocalDialect
<property name="hibernate.dialect">
com.credit.publicmodel.util.MySQL5LocalDialect
</property>
现在HQL中使用convert方法, 例如: convert(fieldName, 'gbk') , "GBK"也可以是其他字符集.
提到这里顺便也说说hibernate中dialect的作用吧:dialect就是“方言”,因为hibernate是要把Java对象转换成关系数据库来描述的,而关系数据库虽然有一些统一的标准,如SQL-92等,但是实际上各数据库如Oracle, MySQL, MS SQL Server等等为了提高性能或增加功能都提供了一些额外的标准或语法,因此,hibernate为了更好适配各种关系数据库,针对每种数据库都指定了一个方言dialect。
你可以看到hibernate里面实际上方言只是一个类,它里面将不同数据类型、SQL语法转换成hibernate能理解的统一的格式。但注意,如果没有对应的dialect,Hibernate是无法使用这种数据库进行对象关系转换的。
相关推荐
hibernate3.6.0dialect.jar
hibernate3dialect
hibernate 4以上Hibernate.INTEGER之类的不能使用了,之前使用的SQLiteDialect.java编译不过去了,这个可以。
2.2、打开此文件,将“<property name="hibernate.connection.url">jdbc:sqlite:D:/EGSDatabase.egsdata”一行中的数据库文件("D:/EGSDatabase.egsdata")修改为合适的数据库文件。 注:附件包含了...
SQLServer2008Dialect 优化了原来的分页查询数据方法以及在生成SQL时表后增加了with(nolock)
方言(Dialect)是Hibernate中的一个关键组件,它定义了如何与特定的数据库管理系统(DBMS)进行通信的规则和语法。 瀚高数据库,全称为HighGo Database,是一款源自中国的高性能、安全可靠的开源数据库系统,适用于...
南大通用GBase数据库GBase_Hibernate3.2.3_GA-Dialect_8.3.81.51_build50.1.jar
Hibernate方言(Dialect)是Hibernate框架中的一个关键概念,它是Hibernate与特定数据库之间通信的桥梁。方言定义了如何将Hibernate的SQL语句转换为特定数据库所理解的SQL,包括列类型、约束、SQL语法等。例如,达梦...
在上面的配置中,我们使用了org.hibernate.dialect.SQLServerDialect SQL方言来生成适合SQL Server数据库的SQL语句。 下面是Hibernate支持的不同数据库的SQL方言: * DB2:org.hibernate.dialect.DB2Dialect * DB2...
Dialect在Hibernate中起着至关重要的作用,它定义了特定数据库的SQL语法、类型映射以及特殊功能。达梦方言则是专门为Hibernate定制,使得Hibernate可以理解和优化针对达梦数据库的SQL语句,从而提高性能和兼容性。 ...
hibernate下的kingbase的jar文件,需要的同学自行下载
在Hibernate中,为了适应不同的数据库管理系统(DBMS),它引入了“方言”(Dialect)的概念。方言是Hibernate与特定数据库进行有效沟通的关键组件,负责处理SQL语法差异,确保跨数据库的一致性和兼容性。以下是对...
Hibernate人大金仓jar包
而方言(Dialect)则是Hibernate中用于适配不同数据库系统的类,它定义了SQL语法的特定实现,使得Hibernate可以正确地在不同的数据库上执行SQL语句。 达梦数据库作为国内自主研发的高性能、高安全性的数据库产品,...
hibernate.dialect = org.hibernate.dialect.MySQLDialect hibernate.connection.driver_class = com.mysql.jdbc.Driver hibernate.connection.url = jdbc:mysql:///test hibernate.connection.username = gavin ...
如果使用Hibernate,需要在配置文件中指定`hibernate.dialect`为`org.hibernate.dialect.KingbaseDialect`。 6. **最佳实践** - 选择适合项目JDK版本的驱动jar包,避免版本不兼容问题。 - 确保正确配置数据库连接...
亲测可以使用kingbase8-Finaldialect-5.2.17.jar kingbase8-8.2.0.jar
在Hibernate中,方言(Dialect)是关键组件之一,它定义了特定数据库的SQL语法和特性。达梦数据库的方言包使得Hibernate能理解并生成符合达梦数据库语法的SQL语句。在压缩包中提供的Hibernate方言包,适用于...
Oracle 9i/10g org.hibernate.dialect.Oracle9Dialect Sybase org.hibernate.dialect.SybaseDialect Sybase Anywhere org.hibernate.dialect.SybaseAnywhereDialect Microsoft SQL Server org.hibernate....
凤凰冬眠方言描述Apache Phoenix Hibernate方言。建造 该项目使用maven进行构建。 只需在项目根目录中键入下一个命令。 mvn clean install要部署到Bintray,只需在项目根目录中键入下一个命令。 将替换为当前的Gpg...