覆盖JDBC第三方jar中的方法



我想通过ebean访问我的数据库。我的数据库是Gupta SQLBase 11.5(不要怀疑如果你不知道它)。问题是古普塔的人都很懒。所以他们的java.sql.DatabaseMetaData.getDatabaseMajorVersion的实现抛出一个SqlException:不支持的方法。有没有可能在我的应用程序中重写这个方法,让它只返回11?我已经尝试用这种方法实现我自己的jdbc.gupta.sqlbase.SqlbaseDatabaseMetaData类,这种方法确实有效,但我无法实现接口需要的所有方法。这就是为什么我通过ebean执行的所有选择都返回null的原因。所以我只需要重写getDatabaseMajorVersion方法。IMHO没有意见实现一个子类,只是扩展gupta类,因为我的类永远不会被占用。

谢谢你给我的每一个建议。敬上,Marco

您可以通过使用委托模式或Proxy(反射)来编写包装器。您将需要拦截对"被覆盖"方法的任何调用,并将其他方法委托给底层对象。

为方便起见,您还可以为Connection编写一个包装器,并覆盖Connection.getMetaData(),它应该返回您的包装器的实例。

如果您想更花哨,您也可以注册一个Driver的实现,它重写连接URL并返回您的Connection的实例。

相关内容

  • 没有找到相关文章

最新更新