Seeing this issue after upgrading springboot to 3.4.3 (automatic upgrade of hibernate ORM 6.6.8-Final). There was no issue with springboot 3.2.3 (hibernate ORM 6.4.4-Final)
.hibernate.exception.SQLGrammarException: JDBC exception executing SQL ERROR: column jlargco1_0.ab_cst_office_id does not exist
Hint: Perhaps you meant to reference the column "jlargco1_0.abcstofficeid".
Position: 1495] [n/a]
at .hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:91) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:58) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:94) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:268) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.getResultSet(DeferredResultSetAccess.java:171) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.<init>(JdbcValuesResultSetImpl.java:74) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.resolveJdbcValuesSource(JdbcSelectExecutorStandardImpl.java:355) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:137) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:102) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.sql.exec.spi.JdbcSelectExecutor.executeQuery(JdbcSelectExecutor.java:91) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:165) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.loader.ast.internal.SingleIdLoadPlan.load(SingleIdLoadPlan.java:145) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.loader.ast.internal.SingleIdLoadPlan.load(SingleIdLoadPlan.java:117) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.loader.ast.internal.SingleIdEntityLoaderStandardImpl.load(SingleIdEntityLoaderStandardImpl.java:74) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.persister.entity.AbstractEntityPersister.doLoad(AbstractEntityPersister.java:3895) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3884) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:604) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.event.internal.DefaultLoadEventListener.loadFromCacheOrDatasource(DefaultLoadEventListener.java:590) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:560) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:544) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:206) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.event.internal.DefaultLoadEventListener.loadWithRegularProxy(DefaultLoadEventListener.java:289) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:241) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:110) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:69) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:138) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.internal.SessionImpl.fireLoadNoChecks(SessionImpl.java:1229) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1217) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.loader.internal.IdentifierLoadAccessImpl.load(IdentifierLoadAccessImpl.java:210) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.loader.internal.IdentifierLoadAccessImpl.doLoad(IdentifierLoadAccessImpl.java:161) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.loader.internal.IdentifierLoadAccessImpl.lambda$load$1(IdentifierLoadAccessImpl.java:150) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.loader.internal.IdentifierLoadAccessImpl.perform(IdentifierLoadAccessImpl.java:113) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.loader.internal.IdentifierLoadAccessImpl.load(IdentifierLoadAccessImpl.java:150) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.internal.SessionImpl.find(SessionImpl.java:2459) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.internal.SessionImpl.find(SessionImpl.java:2430) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na]
at .springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:364) ~[spring-orm-6.2.3.jar:6.2.3]
at jdk.proxy4/jdk.proxy4.$Proxy153.find(Unknown Source) ~[na:na]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na]
at .springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:320) ~[spring-orm-6.2.3.jar:6.2.3]
at jdk.proxy4/jdk.proxy4.$Proxy153.find(Unknown Source) ~[na:na]
at .springframework.data.jpa.repository.support.SimpleJpaRepository.findById(SimpleJpaRepository.java:325) ~[spring-data-jpa-3.4.3.jar:3.4.3]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na]
Entity table as follows:
import lombok.Getter;
import lombok.Setter;
import jakarta.persistence.*;
import java.sql.Timestamp;
@Entity
@Getter
@Setter
@Table(schema = "newschema_dbo", name = "jncdestofficebcstoffice")
public class JnLctnAtcRegionsGlobColtOffice {
@Id
@Column(name="jncsestofficebcstofficeid")
private Integer jncsestofficebcstofficeId;
@Column(name="creationdtsrv")
private Timestamp creationDtSrv;
@Column(name="createdby")
private String createdBy;
@ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name="abCstOfficeId", referencedColumnName = "abCstOfficeId")
private abCstOffice abCstOffice;
@OneToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name="cdEstOfficeId", referencedColumnName = "cdEstOfficeId")
private cdEstOffice cdEstOffice;
}
The database has the column as abcstofficeid, but after upgrading to springboot 3.4.3 it seems to pick up the column name as ab_cst_office_id
Seeing this issue after upgrading springboot to 3.4.3 (automatic upgrade of hibernate ORM 6.6.8-Final). There was no issue with springboot 3.2.3 (hibernate ORM 6.4.4-Final)
.hibernate.exception.SQLGrammarException: JDBC exception executing SQL ERROR: column jlargco1_0.ab_cst_office_id does not exist
Hint: Perhaps you meant to reference the column "jlargco1_0.abcstofficeid".
Position: 1495] [n/a]
at .hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:91) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:58) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:94) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:268) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.getResultSet(DeferredResultSetAccess.java:171) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.<init>(JdbcValuesResultSetImpl.java:74) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.resolveJdbcValuesSource(JdbcSelectExecutorStandardImpl.java:355) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:137) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:102) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.sql.exec.spi.JdbcSelectExecutor.executeQuery(JdbcSelectExecutor.java:91) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:165) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.loader.ast.internal.SingleIdLoadPlan.load(SingleIdLoadPlan.java:145) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.loader.ast.internal.SingleIdLoadPlan.load(SingleIdLoadPlan.java:117) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.loader.ast.internal.SingleIdEntityLoaderStandardImpl.load(SingleIdEntityLoaderStandardImpl.java:74) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.persister.entity.AbstractEntityPersister.doLoad(AbstractEntityPersister.java:3895) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3884) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:604) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.event.internal.DefaultLoadEventListener.loadFromCacheOrDatasource(DefaultLoadEventListener.java:590) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:560) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:544) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:206) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.event.internal.DefaultLoadEventListener.loadWithRegularProxy(DefaultLoadEventListener.java:289) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:241) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:110) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:69) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:138) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.internal.SessionImpl.fireLoadNoChecks(SessionImpl.java:1229) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1217) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.loader.internal.IdentifierLoadAccessImpl.load(IdentifierLoadAccessImpl.java:210) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.loader.internal.IdentifierLoadAccessImpl.doLoad(IdentifierLoadAccessImpl.java:161) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.loader.internal.IdentifierLoadAccessImpl.lambda$load$1(IdentifierLoadAccessImpl.java:150) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.loader.internal.IdentifierLoadAccessImpl.perform(IdentifierLoadAccessImpl.java:113) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.loader.internal.IdentifierLoadAccessImpl.load(IdentifierLoadAccessImpl.java:150) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.internal.SessionImpl.find(SessionImpl.java:2459) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at .hibernate.internal.SessionImpl.find(SessionImpl.java:2430) ~[hibernate-core-6.6.8.Final.jar:6.6.8.Final]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na]
at .springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:364) ~[spring-orm-6.2.3.jar:6.2.3]
at jdk.proxy4/jdk.proxy4.$Proxy153.find(Unknown Source) ~[na:na]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na]
at .springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:320) ~[spring-orm-6.2.3.jar:6.2.3]
at jdk.proxy4/jdk.proxy4.$Proxy153.find(Unknown Source) ~[na:na]
at .springframework.data.jpa.repository.support.SimpleJpaRepository.findById(SimpleJpaRepository.java:325) ~[spring-data-jpa-3.4.3.jar:3.4.3]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na]
Entity table as follows:
import lombok.Getter;
import lombok.Setter;
import jakarta.persistence.*;
import java.sql.Timestamp;
@Entity
@Getter
@Setter
@Table(schema = "newschema_dbo", name = "jncdestofficebcstoffice")
public class JnLctnAtcRegionsGlobColtOffice {
@Id
@Column(name="jncsestofficebcstofficeid")
private Integer jncsestofficebcstofficeId;
@Column(name="creationdtsrv")
private Timestamp creationDtSrv;
@Column(name="createdby")
private String createdBy;
@ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name="abCstOfficeId", referencedColumnName = "abCstOfficeId")
private abCstOffice abCstOffice;
@OneToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name="cdEstOfficeId", referencedColumnName = "cdEstOfficeId")
private cdEstOffice cdEstOffice;
}
The database has the column as abcstofficeid, but after upgrading to springboot 3.4.3 it seems to pick up the column name as ab_cst_office_id
Share Improve this question asked Mar 17 at 12:06 Divya MurugananthamDivya Muruganantham 517 bronze badges1 Answer
Reset to default 0I encountered something a bit similar to your issue. Not the same issue, though. I wrote my entity classes in the following approach and it resolved the issues for me.
You can try this and see if it works. I have updated the entity class for you.
@Entity
@Getter
@Setter
@Table(schema = "newschema_dbo", name = "jncdestofficebcstoffice")
public class test {
@Id
@Column(
name="jncsestofficebcstoffice_id"
)
private Integer jncsestofficebcstofficeId;
@Column(
name="creation_dt_srv"
)
private Timestamp creationDtSrv;
@Column(
name="created_by"
)
private String createdBy;
@JoinColumn(
name="ab_cst_office_id"
)
@ManyToOne(
targetEntity = abCstOffice.class,
fetch = FetchType.LAZY,
cascade = CascadeType.PERSIST
)
private abCstOffice abCstOffice;
@Column(
name = "ab_cst_office_id",
insertable = false,
updatable = false,
nullable = false //change this as per your use-case
)
private UUID abCstOfficeId;
@JoinColumn(
name="cd_est_office_id"
)
@OneToOne(
targetEntity = cdEstOffice.class,
fetch = FetchType.LAZY,
cascade = CascadeType.PERSIST
)
private cdEstOffice cdEstOffice;
@Column(
name = "cd_est_office_id",
insertable = false,
updatable = false,
nullable = false //change this as per your use-case
)
private UUID cdEstOfficeId;
}
I think separately using the @Column annotation removes the Hibernate confusion.