tinyint在databasemetadata java中以位返回

gdrx4gfi  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(288)

mysql tinyint在java中返回位,列大小返回null。对于其他数据类型,它工作正常。有什么解决办法吗?

Class clsObj = Class.forName(className);
AbstractEntityPersister classMetadata = (AbstractEntityPersister) getSessionFactory().getClassMetadata(clsObj);
String[] properties = classMetadata.getPropertyNames();
String tableName = classMetadata.getTableName();

Map<String, String> dbFieldToPojoFieldMap = new HashMap<String, String>();
for (String prop : properties) {
    String[] names = classMetadata.getPropertyColumnNames(prop);
    dbFieldToPojoFieldMap.put(names[0], prop);
}

DatabaseMetaData meta = con.getMetaData();
ResultSet rsColumns = meta.getColumns(null, null, tableName, null);

while (rsColumns.next()) {
    Map<String, String> columnMetaData = new HashMap<String, String>();
    String columnName = rsColumns.getString(Constants.COLUMN_NAME);
    String columnType = rsColumns.getString(Constants.TYPE_NAME);
    String columnSize = rsColumns.getString(Constants.COLUMN_SIZE);
    String decimalDigits = rsColumns.getString(Constants.DECIMAL_DIGITS);
}
mfpqipee

mfpqipee1#

我们也有类似的问题。看起来mysql的新版本(即5.0.6之后的版本,如8)定义了 BIT 作为的别名的列类型 TINYINT(1) . 另外, BOOL 以及 BOOLEAN 已经介绍了。为了解决这个问题,我们决定使用java连接字符串选项 "tinyInt1isBit=false" 为了正确定义 TINYINT 列报告正确。我们不使用 BIT . 希望这有帮助。

相关问题