ActiveJDBC插入没有准备好的声明

时间:2015-12-01 10:15:55

标签: java activejdbc

我尝试将ActiveJDBC用于其驱动程序不支持Connection.prepareStatement(String, String[])方法的数据库。我在尝试插入时遇到以下异常:

org.javalite.activejdbc.DBException: java.sql.SQLFeatureNotSupportedException: [DataDirect][OpenEdge JDBC Driver]Unsupported method: Connection.prepareStatement(String, String[]), query: INSERT INTO ...
    at com.ddtek.jdbc.openedgebase.ddb9.b(Unknown Source)
    at com.ddtek.jdbc.openedgebase.ddb9.a(Unknown Source)
    at com.ddtek.jdbc.openedgebase.ddb8.b(Unknown Source)
    at com.ddtek.jdbc.openedgebase.ddb8.a(Unknown Source)
    at com.ddtek.jdbc.openedgebase.BaseConnection.prepareStatement(Unknown Source)
    at org.javalite.activejdbc.DB.execInsert(DB.java:597)
    at org.javalite.activejdbc.Model.insert(Model.java:2618)
    at org.javalite.activejdbc.Model.save(Model.java:2552)
    at org.javalite.activejdbc.Model.saveIt(Model.java:2477)
    ...

支持一些其他形式的prepareStatement,例如prepareStatement (String)prepareStatement (String, int)

我可以做些什么来说服ActiveJDBC不要使用不支持的声明吗?

2 个答案:

答案 0 :(得分:0)

正如您在source中所看到的,这几乎是硬编码的。因此,从我的头脑中你可以要求改变ActiveJDBC或继续包装你的"有缺陷的"连接到自定义实现并覆盖此prepareStatement(String, String[])

public PreparedStatement prepareStatement(String qry, String[] autoIdColumns) {
  return delegate.prepareStatement(qry);
}

Google为ConnectionWrapper实施提供了一些想法。

答案 1 :(得分:0)

请查看ActiveJDBC支持的数据库:http://javalite.io/activejdbc#supported-databases。每一个都经过全面测试。