Skip to content

Commit 7b69c7e

Browse files
adferrandkoentsje
authored andcommitted
HBX-2716 - Remove floating point types from types advertised to support precision & scale
Signed-off-by: Koen Aers <[email protected]>
1 parent 6ea3eee commit 7b69c7e

File tree

7 files changed

+34
-222
lines changed

7 files changed

+34
-222
lines changed

main/src/main/java/org/hibernate/cfg/JDBCBinder.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@
2828
import org.hibernate.cfg.reveng.AssociationInfo;
2929
import org.hibernate.cfg.reveng.DatabaseCollector;
3030
import org.hibernate.cfg.reveng.JDBCReader;
31-
import org.hibernate.cfg.reveng.JDBCToHibernateTypeHelper;
3231
import org.hibernate.cfg.reveng.MappingsDatabaseCollector;
3332
import org.hibernate.cfg.reveng.RevEngUtils;
3433
import org.hibernate.cfg.reveng.ReverseEngineeringStrategy;
3534
import org.hibernate.cfg.reveng.TableIdentifier;
35+
import org.hibernate.cfg.reveng.utils.JdbcToHibernateTypeHelper;
3636
import org.hibernate.engine.OptimisticLockStyle;
3737
import org.hibernate.engine.jdbc.spi.JdbcServices;
3838
import org.hibernate.engine.spi.Mapping;
@@ -934,7 +934,7 @@ private String guessAndAlignType(Table table, Column column, Mapping mapping, bo
934934
}
935935

936936
private String typeCodeName(int sqlTypeCode) {
937-
return sqlTypeCode + "(" + JDBCToHibernateTypeHelper.getJDBCTypeName(sqlTypeCode) + ")";
937+
return sqlTypeCode + "(" + JdbcToHibernateTypeHelper.getJDBCTypeName(sqlTypeCode) + ")";
938938
}
939939

940940
/**

main/src/main/java/org/hibernate/cfg/reveng/BasicColumnProcessor.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.hibernate.JDBCException;
88
import org.hibernate.cfg.JDBCBinderException;
99
import org.hibernate.cfg.reveng.dialect.MetaDataDialect;
10+
import org.hibernate.cfg.reveng.utils.JdbcToHibernateTypeHelper;
1011
import org.hibernate.mapping.Column;
1112
import org.hibernate.mapping.Table;
1213
import org.hibernate.tool.util.TableNameQualifier;
@@ -82,15 +83,15 @@ public static void processBasicColumns(
8283
column.setComment(comment);
8384
column.setSqlTypeCode(new Integer(sqlType) );
8485
if(intBounds(size) ) {
85-
if(JDBCToHibernateTypeHelper.typeHasLength(sqlType) ) {
86+
if(JdbcToHibernateTypeHelper.typeHasLength(sqlType) ) {
8687
column.setLength(size);
8788
}
88-
if(JDBCToHibernateTypeHelper.typeHasScaleAndPrecision(sqlType) ) {
89+
if(JdbcToHibernateTypeHelper.typeHasPrecision(sqlType) ) {
8990
column.setPrecision(size);
9091
}
9192
}
9293
if(intBounds(decimalDigits) ) {
93-
if(JDBCToHibernateTypeHelper.typeHasScaleAndPrecision(sqlType) ) {
94+
if(JdbcToHibernateTypeHelper.typeHasScale(sqlType) ) {
9495
column.setScale(decimalDigits);
9596
}
9697
}

main/src/main/java/org/hibernate/cfg/reveng/DefaultReverseEngineeringStrategy.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import java.util.Properties;
1111
import java.util.Set;
1212

13+
import org.hibernate.cfg.reveng.utils.JdbcToHibernateTypeHelper;
1314
import org.hibernate.internal.util.StringHelper;
1415
import org.hibernate.mapping.Column;
1516
import org.hibernate.mapping.ForeignKey;
@@ -106,11 +107,11 @@ public String foreignKeyToEntityName(String keyname, TableIdentifier fromTable,
106107
}
107108

108109
public String columnToHibernateTypeName(TableIdentifier table, String columnName, int sqlType, int length, int precision, int scale, boolean nullable, boolean generatedIdentifier) {
109-
String preferredHibernateType = JDBCToHibernateTypeHelper.getPreferredHibernateType(sqlType, length, precision, scale, nullable, generatedIdentifier);
110+
String preferredHibernateType = JdbcToHibernateTypeHelper.getPreferredHibernateType(sqlType, length, precision, scale, nullable, generatedIdentifier);
110111

111112
String location = "<no info>";
112113
if(log.isDebugEnabled()) {
113-
String info = " t:" + JDBCToHibernateTypeHelper.getJDBCTypeName( sqlType ) + " l:" + length + " p:" + precision + " s:" + scale + " n:" + nullable + " id:" + generatedIdentifier;
114+
String info = " t:" + JdbcToHibernateTypeHelper.getJDBCTypeName( sqlType ) + " l:" + length + " p:" + precision + " s:" + scale + " n:" + nullable + " id:" + generatedIdentifier;
114115
if(table!=null) {
115116
location = TableNameQualifier.qualify(table.getCatalog(), table.getSchema(), table.getName() ) + "." + columnName + info;
116117
} else {

main/src/main/java/org/hibernate/cfg/reveng/JDBCToHibernateTypeHelper.java

Lines changed: 0 additions & 199 deletions
This file was deleted.

main/src/main/java/org/hibernate/cfg/reveng/OverrideRepository.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.apache.commons.collections4.MapIterator;
2121
import org.apache.commons.collections4.MultiValuedMap;
2222
import org.hibernate.MappingException;
23+
import org.hibernate.cfg.reveng.utils.JdbcToHibernateTypeHelper;
2324
import org.hibernate.cfg.reveng.utils.MetaAttributeHelper;
2425
import org.hibernate.cfg.reveng.utils.MetaAttributeHelper.SimpleMetaAttribute;
2526
import org.hibernate.internal.util.StringHelper;
@@ -318,7 +319,7 @@ public List<SchemaSelection> getSchemaSelections() {
318319
public String columnToHibernateTypeName(TableIdentifier table, String columnName, int sqlType, int length, int precision, int scale, boolean nullable, boolean generatedIdentifier) {
319320
String result = null;
320321
String location = "";
321-
String info = " t:" + JDBCToHibernateTypeHelper.getJDBCTypeName( sqlType ) + " l:" + length + " p:" + precision + " s:" + scale + " n:" + nullable + " id:" + generatedIdentifier;
322+
String info = " t:" + JdbcToHibernateTypeHelper.getJDBCTypeName( sqlType ) + " l:" + length + " p:" + precision + " s:" + scale + " n:" + nullable + " id:" + generatedIdentifier;
322323
if(table!=null) {
323324
location = TableNameQualifier.qualify(table.getCatalog(), table.getSchema(), table.getName() ) + "." + columnName;
324325
} else {

main/src/main/java/org/hibernate/cfg/reveng/utils/JdbcToHibernateTypeHelper.java

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -183,17 +183,25 @@ public static String getJDBCTypeName(int value) {
183183
* @throws SQLException
184184
*/
185185

186-
// scale and precision have numeric column
187-
public static boolean typeHasScaleAndPrecision(int sqlType) {
188-
return (sqlType == Types.DECIMAL || sqlType == Types.NUMERIC
189-
|| sqlType == Types.REAL || sqlType == Types.FLOAT || sqlType == Types.DOUBLE);
190-
}
191-
192-
// length is for string column
193-
public static boolean typeHasLength(int sqlType) {
194-
return (sqlType == Types.CHAR || sqlType == Types.DATE
195-
|| sqlType == Types.LONGVARCHAR || sqlType == Types.TIME || sqlType == Types.TIMESTAMP
196-
|| sqlType == Types.VARCHAR );
197-
}
198-
}
186+
// scale is for non floating point numeric columns
187+
public static boolean typeHasScale(int sqlType) {
188+
return (sqlType == Types.DECIMAL || sqlType == Types.NUMERIC);
189+
}
190+
191+
// precision is for numeric columns
192+
public static boolean typeHasPrecision(int sqlType) {
193+
return (sqlType == Types.DECIMAL || sqlType == Types.NUMERIC
194+
|| sqlType == Types.REAL || sqlType == Types.FLOAT || sqlType == Types.DOUBLE);
195+
}
199196

197+
public static boolean typeHasScaleAndPrecision(int sqlType) {
198+
return typeHasScale(sqlType) && typeHasPrecision(sqlType);
199+
}
200+
201+
// length is for string columns
202+
public static boolean typeHasLength(int sqlType) {
203+
return (sqlType == Types.CHAR || sqlType == Types.DATE
204+
|| sqlType == Types.LONGVARCHAR || sqlType == Types.TIME || sqlType == Types.TIMESTAMP
205+
|| sqlType == Types.VARCHAR );
206+
}
207+
}

main/src/main/java/org/hibernate/tool/hbmlint/detector/SchemaByMetaDataDetector.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
import org.hibernate.cfg.reveng.DefaultDatabaseCollector;
1919
import org.hibernate.cfg.reveng.DefaultReverseEngineeringStrategy;
2020
import org.hibernate.cfg.reveng.JDBCReader;
21-
import org.hibernate.cfg.reveng.JDBCToHibernateTypeHelper;
2221
import org.hibernate.cfg.reveng.SchemaSelection;
22+
import org.hibernate.cfg.reveng.utils.JdbcToHibernateTypeHelper;
2323
import org.hibernate.dialect.Dialect;
2424
import org.hibernate.engine.jdbc.spi.JdbcServices;
2525
import org.hibernate.engine.spi.Mapping;
@@ -200,7 +200,7 @@ public void visit(
200200
pc.reportIssue( new Issue( "SCHEMA_COLUMN_TYPE_MISMATCH",
201201
Issue.NORMAL_PRIORITY, table(table) + " has a wrong column type for "
202202
+ col.getName() + ", expected: "
203-
+ JDBCToHibernateTypeHelper.getJDBCTypeName(modelTypeCode) + " but was " + JDBCToHibernateTypeHelper.getJDBCTypeName(dbTypeCode) + " in db") );
203+
+ JdbcToHibernateTypeHelper.getJDBCTypeName(modelTypeCode) + " but was " + JdbcToHibernateTypeHelper.getJDBCTypeName(dbTypeCode) + " in db") );
204204
}
205205
}
206206
}

0 commit comments

Comments
 (0)