0

我想通过 ebean 访问我的数据库。我的数据库是 Gupta SQLBase 11.5(不知道你不知道)。问题是古普塔的人很懒惰。所以他们对 java.sql.DatabaseMetaData.getDatabaseMajorVersion 的实现抛出了一个 SqlException: unsupported method。是否可以在我的应用程序中覆盖该方法以使其仅返回 11?我已经尝试使用这种方法实现我自己的 jdbc.gupta.sqlbase.SqlbaseDatabaseMetaData 类,该方法确实有效,但我无法实现接口所需的所有方法。这就是为什么我通过 ebean 所做的所有选择都返回 null。所以我只需要覆盖getDatabaseMajorVersion方法。恕我直言,没有意见来实现一个仅扩展 gupta 类的子类,因为我的课程永远不会被录取。

感谢您提供的每一个建议。最好的问候, 马可

4

1 回答 1

1

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

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

如果你想花哨,你也可以注册一个Driver重写连接 URL 并返回你的Connection.

于 2013-03-18T11:08:47.583 回答