java
  • mysql
  • oracle
  • hibernate
  • 2012-10-29 141 views 0 likes 
    0

    我有一個應該支持oracle和mysql數據庫的應用程序。 我將爲不同的數據庫獲得不同的配置。hibernate支持多個數據庫oracle和mysql的HQL查詢

    但我希望代碼中使用的所有HSQL都是完整的。

    ,但我不能bcoz下面這樣做:

    我創建了一個查詢象下面這樣:

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

    這個作品非常好MySQL中 但不是在預言

    因爲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這多個查詢聲明?

    +1

    爲什麼不使用標準查詢參數? http://docs.jboss.org/hibernate/orm/3.2/api/org/hibernate/Query.html#setDate%28java.lang.String,%20java.util.Date%29 – DRCB

    回答

    1

    String之外創建一個java.sql.Date並將其傳遞給查詢;不要將轉換嵌入到數據庫中。

    更好的是,在達到持久層之前,將String綁定到Date很久。 Java是一種面向對象的語言;按照對象來思考。

    +0

    感謝您的回覆..i試過這個..但仍然發生異常.......... java.sql.SQLDataException:ORA-01861:文字不匹配格式字符串..你能猜到這裏怎麼了? – svk

    +0

    是的,你還在使用字符串。 – duffymo

    相關問題