我正在尝试通过使用 jdbc DatabaseMetadata 和 ResultSet 进行查询来构建 DatabaseTable(我的自定义对象)对象。
如果我在 MySQL 数据库上运行下面的代码,它工作得非常好,但是在尝试 Exasol 数据库时它会失败并出现异常。
private DatabaseTableColumnMetadata getTableAndColumnNames(DatabaseMetaData metaData)
throws SQLException {
ResultSet tables = metaData.getTables(null,null,"%",null);
while (tables.next()){
if (tables.getString("TABLE_TYPE").equalsIgnoreCase("TABLE")
&& ((ResultSetImpl) tables).getConnection().getCatalog()
.equals(tables.getString("TABLE_CAT"))) {
DatabaseTable table = DatabaseTable.builder().name(tables.getString("TABLE_NAME")).schema(tables.getString("TYPE_SCHEM")).build();
}
}
}
抛出的异常如下
com.exasol.jdbc.EXAResultSet cannot be cast to com.mysql.cj.jdbc.result.ResultSetImpl","message":"com.exasol.jdbc.EXAResultSet cannot be cast to com.mysql.cj.jdbc.result.ResultSetImpl","name":"java.lang.ClassCastException
抛出的异常发生在它试图将表对象转换为ResultSetImpl的位置。
我的项目 exajdbc.jar 和 mysql-connector.jar 中有两个 jar
任何帮助或线索来解决这个问题请。