atitit. hb 原生sql跨数据库解决原理 获得hb 数据库类型运行期获得Dialect

atitit. hb 原生sql跨数据库解决原理 获得hb 数据库类型运行期获得Dialect  


#-----原理

Hibernate 运行期获得Dialect  

2010-07-28 12:59:58|  分类: 软件开发 |举报 |字号 订阅

    String dialect = ((SessionFactoryImpl) session.getSessionFactory()).getDialect()
    .getClass().getName();
//     //org.hibernate.dialect.MySQLDialect
 

如果是spring + hibernate则可以:

 String dialect = ((SessionFactoryImpl) getHibernateTemplate().getSessionFactory()).getDialect()
  .getClass().getName();
 
 
    
      作者 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
 
 
 #----实际代码

    private boolean ifMysql() {
        // attilax 老哇的爪子 上午10:24:49 2014年5月10日
        String dialect = ((SessionImpl) getSession()).getFactory().getDialect()
                .getClass().getName();
        // org.hibernate.dialect.MySQLDialect
        System.out.println(dialect);
        if (dialect.contains("MySQLDialect"))
            return true;
        else
            return false;
    }


    Session session = getSession();
        String sqlString = "SELECT   *   FROM  t_mb_awardweixin   where activityId="
                + actid
                + " and openId='"
                + uid
                + "' and   DATEDIFF(d,createTime,GETDATE())=0";
        // 以SQL语句创建SQLQuery对象
        if(ifMysql())
            sqlString= "SELECT   *   FROM  t_mb_awardweixin   where activityId="
                    + actid
                    + " and openId='"
                    + uid
                    + "' and  date(createTime)   =   curdate(); ";

        List l = session.createSQLQuery(sqlString)
 
 
 

原文地址:https://www.cnblogs.com/attilax/p/15199224.html