2012年9月11日 星期二

Hibernate:自定義Dialect

目標是做出PG跟MS都可以共用的DateAdd方法


PostgreSQLDialect
/**
 * 

自訂PostgreSQLDialect

* @author Lyon Lin
 */
public class PostgreSQLDialect extends org.hibernate.dialect.PostgreSQLDialect {
    public PostgreSQLDialect() {
        super();
        // 日期運算
        registerFunction("dateadd", new SQLFunctionTemplate(Hibernate.TIMESTAMP, "(?3::date + INTERVAL '?2 ?1') "));
    }
}

SQLServerDialect
/**
 * 自訂SQLServerDialect


 * @author Lyon Lin
 */
public class SQLServerDialect extends org.hibernate.dialect.SQLServerDialect {
    public SQLServerDialect() {
        super();
        // 日期運算
        registerFunction("dateadd", new SQLFunctionTemplate(Hibernate.TIMESTAMP,"dateadd(?1,?2,?3)"));
    }
}

再把hibernate.cfg.xml裡的hibernate.dialect指過來就完成了

沒有留言:

張貼留言