加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何在运行时获取Hibernate方言

发布时间:2020-12-15 03:07:07 所属栏目:Java 来源:网络整理
导读:在我的应用程序中,我使用Hibernate与SQL Server数据库,所以我设置 property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect" 在我的persistence.xml中. 在某些情况下,我想用NULL包括排序记录,我使用关键字NULLS FIRST. 因为Hibern
在我的应用程序中,我使用Hibernate与SQL Server数据库,所以我设置
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect">

在我的persistence.xml中.

在某些情况下,我想用NULL包括排序记录,我使用关键字NULLS FIRST.
因为Hibernate中的CriteriaQuery / CriteriaBuilder默认不支持它,所以我使用Interceptor来修改本机查询.
问题是,SQL Server不支持关键字NULLS FIRST,因此我使用关键字:

case when column_name is null then 0 else 1 end,column_name

如果我想将数据库从SQL Server迁移到Oracle(例如),那么我需要在我的拦截器中放置if-else,选择我正在使用哪种方言,对吧?

这就是我说明它们的方式:

String dialect = ..............
if (dialect.equals("org.hibernate.dialect.SQLServerDialect")) { // get SQL Server dialect
     // put keyword "case when column_name is null then 0 else 1 end,column_name"
} else {
     // put keyword "NULLS FIRST/LAST"
}

如何在运行时获取方言配置(在persistence.xml中)?

解决方法

如果你使用Spring hibernate,试试这个
@Autowired@Qualifier("sessionFactory") org.springframework.orm.hibernate3.LocalSessionFactoryBean sessionFactory; //Suppose using hibernate 3

在你的方法中:

sessionFactory.getHibernateProperties().get("hibernate.dialect")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读