[BEANUTILS] RowSetDynaClass throws for computed NULL values?

Jukka Toivanen <[email protected]> Tue, 5 Aug 2025 10:13:16 +0300
Newsgroups gmane.comp.jakarta.commons.user
Message-ID <CAEr=zvF1MHKM99d1byPb2B37QaGScLcKvLN1iDMgX1w-W59uDA@mail.gmail.com>
Hi,
Not sure if this is a bug or not, so decided to ask here first.

After updagrading my MariaDB Connector/Java from 2.7.12 to 3.5.4 I got
the following problem using Commons BeanUtils: if the query results in
computed NULL values, constructing RowSetDynaClass from the result set
throws SQLException. Apparently metadata.getColumnClassName(i) now
returns "byte[]", for which Class.forName does not work and loadClass
fails. Minimal reproducible example:

String sql = "SELECT NULL AS test FROM DUAL;";
PreparedStatement stmt = conn.prepareStatement(sql);
ResultSet rset = stmt.executeQuery();
RowSetDynaClass rsdc = new RowSetDynaClass(rset);


results in

java.sql.SQLException: Cannot load column class 'byte[]':
java.lang.ClassNotFoundException: byte[]
at org.apache.commons.beanutils.JDBCDynaClass.loadClass(JDBCDynaClass.java:274)
at org.apache.commons.beanutils.JDBCDynaClass.createDynaProperty(JDBCDynaClass.java:121)
at org.apache.commons.beanutils.JDBCDynaClass.introspect(JDBCDynaClass.java:238)
at org.apache.commons.beanutils.RowSetDynaClass.<init>(RowSetDynaClass.java:207)

Any thoughts?

- Jukka Toivanen