Substrは、DATEには使用できません。それを上書きすることはできません。 SQLはデータベース間で簡単に再利用されません。最も簡単な部分は、SQLを変更することです。
難しい部分はダービーに深くステップです:
クエリを変更せずに、この作品を作りたい場合は、ConnectionまたはDataSourceをラップし、下位レベルのSQLを変更することができます。
あなたのテストでConnection
オブジェクトにアクセスする必要があり、これが機能するために:
Connection wrapped = new WrappedConnection(originalConnection);
これはmigrate
機能で、包まれた接続の簡単な例である(これは基本的にAdapter Pattern次のとおりです。
public class WrappedConnection implements Connection
{
private final Connection origConnection;
public WrappedConnection(Connection rv)
{
origConnection = rv;
}
//I left out other methods, that you have to implement accordingly
public PreparedStatement prepareStatement(String pSql) throws SQLException
{
//this you have to implement yourself
//this will serve as a bridge between oracle and derby
String sql = migrate(sql);
return sql;
}
}
migrate
機能は、このような何かをすることができます。
public String migrate(String sql)
{
return sql.replace("SUBSTR", "SUBSTR_DATE");
}
ただし、create your own Derby Function SUBSTR_DATEが必要です。
何それはより多くのDBにとらわれないにするために全体のコードスニペットを修正する機会がかかる場合があります正確にエラー? – oers
エラーは「 'DATE'タイプで 'SUBSTR'関数が許可されていません。 – Sivanandam
DERBY組み込みデータベースのSUBSTR()関数をオーバーライドすることはできますか? – Sivanandam