diff --git a/annotations/src/main/java/org/hibernate/cfg/Ejb3Column.java b/annotations/src/main/java/org/hibernate/cfg/Ejb3Column.java index 6524b2d8bb..c4fbdeea23 100644 --- a/annotations/src/main/java/org/hibernate/cfg/Ejb3Column.java +++ b/annotations/src/main/java/org/hibernate/cfg/Ejb3Column.java @@ -439,9 +439,11 @@ public class Ejb3Column { column.setPropertyName( BinderHelper.getRelativePath( propertyHolder, inferredData.getPropertyName() ) ); - column.setNullable( - col.nullable() - ); //TODO force to not null if available? This is a (bad) user choice. + //although in theory, null is an acceptable value in a Map key + //we need force this column to be not null, as it intended to be the primary key. + if ( nullability != Nullability.FORCED_NULL ) { + column.setNullable( false ); + } column.setUnique( col.unique() ); column.setInsertable( col.insertable() ); column.setUpdatable( col.updatable() );