我想通过ebean访问我的数据库。我的数据库是Gupta SQLBase 11.5(不知道你是否不知道它)。问题是古普塔的家伙非常懒惰。因此,它们对java.sql.DatabaseMetaData.getDatabaseMajorVersion的实现会抛出SqlException:unsupported方法。是否有可能在我的应用程序中覆盖该方法,以便它只返回11?我已经尝试使用此方法实现我自己的jdbc.gupta.sqlbase.SqlbaseDatabaseMetaData类,这确实有效,但我无法实现接口所需的所有方法。这就是为什么我通过ebean做的所有选择都返回null。所以我只需要覆盖getDatabaseMajorVersion方法。恕我直言,没有意见实现一个只扩展gupta类的子类,因为我的类永远不会被采用。
感谢您提供的所有建议。 最好的问候,Marco
答案 0 :(得分:1)
您可以使用delegate pattern或Proxy
(反射)编写包装器。您将需要拦截对“overriden”方法的任何调用,并将其他方法委托给基础对象。
为方便起见,您还可以为Connection
编写一个包装器,并覆盖Connection.getMetaData()
,它应该返回包装器的实例。
如果您想要花哨,您还可以注册Driver
的实现,该实现重写连接URL并返回Connection
的实例。