# Entity property and columnName mapping

**URL:** <https://discourse.hibernate.org/t/entity-property-and-columnname-mapping/12059>\
**Category:** Hibernate ORM\
**Created:** [December 19, 2025, 2:18am UTC](https://discourse.hibernate.org/t/entity-property-and-columnname-mapping/12059 "2025-12-19T02:18:34Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![shouriken](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/shouriken/32/4234_2.png) [@shouriken](https://discourse.hibernate.org/u/shouriken)\
**Post date:** [December 19, 2025, 2:18am UTC](https://discourse.hibernate.org/t/entity-property-and-columnname-mapping/12059/1 "2025-12-19T02:18:34Z")

</div>

Now, I’m using hibernate(5.6) through springbootjpa(2.7.4), and I have encountered a problem. In a case sensitive database (even column names), I annotated a property with @Column annotation and gave an uppercase column names, but in Hibernate, it was converted to lowercase.

I checked the source code and found that in the Ejb3Column class, the explicitly specified column names have been converted by PhysicalNamingStrategy; By default, SpringPhysicalNamingStrategy is used in springboot, which always converts column names to lowercase.

Ejb3Column.java

```java
public void redefineColumnName(String columnName, String propertyName, boolean applyNamingStrategy) {
		...

		if ( applyNamingStrategy ) {
			if ( StringHelper.isEmpty( columnName ) ) {
// there is no @Column annotationed 
				...
				//Do nothing otherwise
			}
			else {
				final Identifier explicitName = database.toIdentifier( columnName );
				final Identifier physicalName = physicalNamingStrategy.toPhysicalColumnName( explicitName, database.getJdbcEnvironment() ); // HERE!!!, the explicitColumnName has been converted
				mappingColumn.setName( physicalName.render( database.getDialect() ) );
			}
		}
		else {
			if ( StringHelper.isNotEmpty( columnName ) ) {
				mappingColumn.setName( normalizer.toDatabaseIdentifierText( columnName ) );
			}
		}
	}

```

SpringPhysicalNamingStrategy.java

```java
public Identifier toPhysicalColumnName(Identifier name, JdbcEnvironment jdbcEnvironment) {
    return apply(name, jdbcEnvironment);
}

private Identifier apply(Identifier name, JdbcEnvironment jdbcEnvironment) {
    if (name == null) {
       return null;
    }
    StringBuilder builder = new StringBuilder(name.getText().replace('.', '_'));
    for (int i = 1; i < builder.length() - 1; i++) {
       if (isUnderscoreRequired(builder.charAt(i - 1), builder.charAt(i), builder.charAt(i + 1))) {
          builder.insert(i++, '_');
       }
    }
    return getIdentifier(builder.toString(), name.isQuoted(), jdbcEnvironment);
}

protected Identifier getIdentifier(String name, boolean quoted, JdbcEnvironment jdbcEnvironment) {
    if (isCaseInsensitive(jdbcEnvironment)) {
       name = name.toLowerCase(Locale.ROOT); // HERE!!! lowercase
    }
    return new Identifier(name, quoted);
}

protected boolean isCaseInsensitive(JdbcEnvironment jdbcEnvironment) {
    return true;
}

```

So, why not directly using the explicit-name without converting by naming-strategy for those columns which are annotated by @Column with `name=”Col_NAME”`?

Just comment the line.

```java
// final Identifier physicalName = physicalNamingStrategy.toPhysicalColumnName( explicitName, database.getJdbcEnvironment() );

```

---

<div class="post-metadata">

**Author:** ![beikov](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/beikov/32/258_2.png) [@beikov](https://discourse.hibernate.org/u/beikov)\
**Post date:** [December 19, 2025, 4:08pm UTC](https://discourse.hibernate.org/t/entity-property-and-columnname-mapping/12059/2 "2025-12-19T16:08:25Z")

</div>

Sorry, but Hibernate ORM 5.6 is not supported anymore, so even if there is a bug, it won’t be fixed unless you’re a Red Hat or IBM customer and open a support ticket. Please update to the latest stable version Hibernate ORM 7.2.

---

<div class="post-metadata">

**Author:** ![shouriken](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/shouriken/32/4234_2.png) [@shouriken](https://discourse.hibernate.org/u/shouriken)\
**Post date:** [December 21, 2025, 2:29pm UTC](https://discourse.hibernate.org/t/entity-property-and-columnname-mapping/12059/3 "2025-12-21T14:29:11Z")

</div>

Okay, thanks, I’ve deal it locally
