java - Tinyint returning as BIT in DatabaseMetaData JAVA
问题描述
MySql tinyint is returning as BIT in java and column size is returning as null. For other data types, it is working fine. Any Solution for this?
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);
}
解决方案
我们遇到了类似的问题。看起来较新版本的 MySQL(即 5.0.6 后,如 8)定义了一个BIT
列类型,它是TINYINT(1)
. 此外,BOOL
并BOOLEAN
已介绍。为了为我们解决这个问题,我们决定使用 java 连接字符串选项"tinyInt1isBit=false"
来正确报告我们正确定义的TINYINT
列。我们不使用BIT
. 希望这可以帮助。
推荐阅读
- express - 错误:无法在视图目录中查找视图“索引”
- json - 从 GCS 加载 Google BigQuery 失败并出现错误 Unsupported empty struct type for field
- sql - 如何在不丢失订单的情况下消除重复
- caching - jboss 是否必须在域模式下才能使用共享缓存?
- javascript - 可以将 Math.random 替换为生成具有相同参数的数字的 CSPRNG 吗?
- python - 如何在python的.mat文件中显示数组元素
- ssms - 放弃设计视图中的更改
- codenameone - 从应用程序的先前版本接收电子邮件日志包
- python - 为什么我的随机森林和决策树一直显示 100% 准确率?
- java - A a = new B() 在java中到底是什么意思