大家好,
HIBERNATE的一个作用是,可以让开发与数据库无关,不用考虑是将来是用MYSQL,还是ORACLE,
由于数据库表中的查询一般很复杂,我们习惯用SQL,请问,如果我用createSQLQuery(SQL语句)来进行查询时,
如: 
SQL语句是:select DATE_FORMAT(a.rq,'%Y-%m-%d'),b.* from xxx a left join yyy b on a.id=b.aid 
开发时是用的MYSQL,可以得出结果正常运行,但是,如果不加修改,将来使用ORACLE数据库是,是否会造成查询失败?

解决方案 »

  1.   

    会,这是两个不同的数据库,SQL语法、函数、SP、UDF、TRIGGER等等都有区别,
    没有一劳永逸的方法
      

  2.   

    mysql和oracle都支持sql标准的 但是自带的函数是不一样的  所以要通用的话最好不要用数据库自带的函数什么的
      

  3.   

    请问是不是用HQL就能完全解决不同数据库的查询?
      

  4.   

    刚才 rucypli 讲的意思是不是如果不用专用数据库的特别函数等,再完全按SQL语法写的查询就可以在不同数据库中查询呢?
      

  5.   

    不能,如果你用的查询语句完全没有具体数据库的函数、SQL语法(比如递归)、UDF的话,可以,但在实际就用中是完全不可能的。
      

  6.   

    oracle 不支持DATE_FORMAT
    换成to_char来试一下。