【问题标题】:hibernate HQL query that supports multiple databases oracle and mysql支持多数据库oracle和mysql的hibernate HQL查询
【发布时间】:2012-10-29 13:51:25
【问题描述】:

我有一个应该支持 oracle 和 mysql 数据库的应用程序。 我会为不同的数据库获得不同的配置。

但我希望代码中使用的所有 HSQL 都完好无损。

但我无法在以下情况下这样做:

我创建了如下查询:

String SQL_QUERY = "select count(log) from dbtable where created_date='"+ givenDate
Query query = session.createQuery(SQL_QUERY);
query.uniqueResult();

这在 mysql 中效果很好 但不是在oracle中

因为 oracle db 期望用

格式化 created_date 列的值
to_date(givenDate,"yyyy-MM-dd")

所以我必须将上述查询更改为:

String SQL_QUERY = "select count(log) from dbtable where created_date=to_date('"+ givenDate+","yyyy-MM-dd")

对于 mysql 和 oracle,我能以任何方式避免这种多重查询声明吗??

【问题讨论】:

标签: java mysql oracle hibernate


【解决方案1】:

String 中创建一个java.sql.Date 并将其传递给查询;不要将转换嵌入数据库中。

更好的是,在String 到达持久层之前很久就将其绑定到Date。 Java 是一种面向对象的语言;从对象的角度思考。

【讨论】:

  • 感谢您的回复..我试过这个..但仍然发生异常..........java.sql.SQLDataException:ORA-01861:文字与格式字符串不匹配。 . 你能猜到这里出了什么问题吗??
  • 是的,你还在使用字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多