hibernate los problemas del nombre de la columna

@Column(name="DateOfBirth") private Date dateOfBirth; 

Necesito específicamente el código anterior para crear una columna llamada “DateOfBirth”, en cambio Hibernate me da una columna llamada date_of_birth. ¿Cómo puedo cambiar esto? ¿Hay una propiedad web.xml? Me encontré con DefaultNamingStrategy y ImprovedNamingStrategy, pero no estoy seguro de cómo especificar uno u otro.

Aquí hay una posible solución alternativa: si lo nombra fecha de dateofbirth la columna en el DB se llamaría así, pero el nombre del atributo debería ser el mismo.

Hibernate toma el formato de caja de camello para crear / leer columnas de base de datos.

He tenido este problema antes. Trabajé con columnas heredadas donde no había espacio en los nombres de las columnas “employeename”, “employeerole”, “departmentlocation”. Lo odio porque todas las propiedades de mis granos tenían que ser sin estuche de camello.

Las columnas de la base de datos separadas por “_” se usarán correctamente para camelCase como acabas de ver.

FYI: El motivo de la inserción de guiones bajos es probablemente porque está utilizando una estrategia mejorada . Está configurado en su objeto de Configuración . Vea aquí para un ejemplo …

Si no desea los guiones bajos, simplemente no puede establecer la estrategia de nombres, o establecerla en la DefaultNamingStrategy que descubrió anteriormente.

Intenta poner esto en

application.properties

 spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl 

Coloque la anotación @Column en el getter:

 @Column(name="DateOfBirth") public Date getDateOfBirth() { ... } 

ImprovedNamingStrategy tiene el método addUnderscores () que se llama desde tableName () y columnName (). Puedes implementar tu propia clase de estrategia de nombres y anularlos según tu elección

  public class MyOwnNamingStrategy extends ImprovedNamingStrategy { @Override public String tableName(String tableName) { //return addUnderscores(columnName); // skip this return columnName; // if you want column name variable name same //return changeAsYouWant(columnName); // as name sames } } 

La solución propuesta fue usar @Column (name = “dateofbirth”), que funcionó para mis propósitos.

Puede anotar campos o métodos getter, no hace la diferencia. ¿Puedes publicar tu archivo hibernate.cfg.xml o persistence.xml completo?

agregue debajo de la propiedad en el caso de arranque de spring.

spring.jpa.hibernate.naming.implicit-strategy = org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl spring.jpa.hibernate.naming.physical-strategy = org.hibernate.boot.model.nadel.PhysicalNamingStrategyStandardImpl

No estoy 100% seguro, pero ¿no necesita anotar el método get y no la variable privada?