Upgrading from Hibernate 4.x to 5.x producing SQLException Invalid Column Index

24 Views Asked by At

Currently my application is having Hibernate 4.x. Since Spring 5.x requires Hibernate 5.2 or later, I am trying to upgrade it to 5.2.6.Final

ivy.xml

<dependency org="org.springframework" name="spring-aop" rev="5.3.29" />
<dependency org="org.springframework" name="spring-jdbc" rev="5.3.29" />
<dependency org="org.springframework" name="spring-jms" rev="5.3.29" />
<dependency org="org.springframework" name="spring-tx" rev="5.3.29" />
<dependency org="org.springframework" name="spring-web" rev="5.3.29" />
<dependency org="org.springframework" name="spring-beans" rev="5.3.29" />
<dependency org="org.springframework" name="spring-context-support" rev="5.3.29" />
<dependency org="org.springframework" name="spring-orm" rev="5.3.29" />
<dependency org="org.springframework" name="spring-context" rev="5.3.29" />
<dependency org="com.oracle" name="ojdbc8" rev="12.2.0.1" />
<dependency org="com.oracle" name="ucp" rev="12.2.0.1" />       
<dependency org="javax.transaction" name="jta" rev="1.1"/>
<dependency org="javax.persistence" name="javax.persistence-api" rev="2.2" />
<dependency org="org.hibernate.javax.persistence" name="hibernate-jpa-2.1-api" />
<dependency org="org.hibernate" name="hibernate-core" rev="5.2.6.Final" />
<dependency org="org.hibernate" name="hibernate-entitymanager" rev="5.2.6.Final" />

Order.java (Table name=ORDER, primaryKey=Order_ID)

@Entity
@Table(name = "ORDER")
@DiscriminatorColumn(name = "ORDER_TYPE", discriminatorType = DiscriminatorType.STRING, length = 1)
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Order extends ZoneOrder {

    private Long id;
    private String itemId;
    private Date orderTime;
    private Long weightage;

    @Override
    @Id
    @SequenceGenerator(name = "ORDER_ID_GENERATOR", sequenceName = "ORDER_SEQ", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ORDER_ID_GENERATOR")
    @Column(name = "ORDER_ID", precision = 22, scale = 0, unique = true, nullable = false)
    public Long getId() {
        return this.id;
    }

    @Column(name = "ORDER_ITEM_ID", length = 14, nullable = false)
    public String getItemId() {
        return this.itemId;
    }

    @Column(name = "ORDER_TIME", nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    public Date getOrderTime() {
        return this.orderTime == null ? null : new Date(this.orderTime.getTime());
    }
    
    @Column(name = "WEIGHTAGE", precision = 22, scale = 0, nullable = false)
    public Long getWeightage() {
        return this.weightage;
    }
    ...
}

SecondaryOrder.java (Table name= SECONDARY_ORDER, primaryKey=ORDER_ID) Both the tables are connected by Order_ID column.

@Entity
@Table(name = "SECONDARY_ORDER")
@DiscriminatorValue(value = "S")
@PrimaryKeyJoinColumn
public class SecondaryOrder extends Order {
    private Long seriesTypeId;
    private String orderKey;

    @Column(name = "SERIES_TYPE_ID", precision = 22, scale = 0)
    public Long getSeriesTypeId() {
        return this.seriesTypeId;
    }

    @Column(name = "ORDER_KEY", length = 14)
    public String getOrderKey() {
        return this.orderKey;
    }
    ...
}

Getting SQL Error: 17003, SQLState: 99999 Invalid column index when tried to insert and then load a record. Please help me to resolve this.

2024-02-20T13:33:08,675 [main] DEBUG org.hibernate.engine.jdbc.spi.SqlExceptionHelper [] [124] - could not insert: [com.bk2c.zone.SecondaryOrder] [insert into ORDER (ORDER_ITEM_ID, WEIGHTAGE, ORDER_TIME, ORDER_ID) values (?, ?, ?, ?)]
java.sql.SQLException: Invalid column index
    at oracle.jdbc.driver.OraclePreparedStatement.setLongInternal(OraclePreparedStatement.java:4857) ~[ojdbc8-12.2.0.1.jar:12.2.0.1.0]
    at oracle.jdbc.driver.OraclePreparedStatement.setLong(OraclePreparedStatement.java:4848) ~[ojdbc8-12.2.0.1.jar:12.2.0.1.0]
    at oracle.jdbc.driver.OraclePreparedStatementWrapper.setLong(OraclePreparedStatementWrapper.java:201) ~[ojdbc8-12.2.0.1.jar:12.2.0.1.0]
    at org.hibernate.type.descriptor.sql.BigIntTypeDescriptor$1.doBind(BigIntTypeDescriptor.java:46) ~[hibernate-core-5.2.6.Final.jar:5.2.6.Final]
    at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:74) ~[hibernate-core-5.2.6.Final.jar:5.2.6.Final]
    at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:277) ~[hibernate-core-5.2.6.Final.jar:5.2.6.Final]
    at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:272) ~[hibernate-core-5.2.6.Final.jar:5.2.6.Final]
    ....
2024-02-20T13:33:08,682 [main] WARN  org.hibernate.engine.jdbc.spi.SqlExceptionHelper [] [129] - SQL Error: 17003, SQLState: 99999
2024-02-20T13:33:08,682 [main] ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper [] [131] - Invalid column index
0

There are 0 best solutions below