Reputation: 21
I have created the table in the H2 database as follows:
CREATE OR REPLACE SEQUENCE IF NOT EXISTS SCMSA_HIST.KEY_GEN_SEQ
START WITH 0
INCREMENT BY 1
NOCYCLE
NOCACHE;
CREATE TABLE IF NOT EXISTS SCMSA_HIST.SCMSA_POS_TRANS_ROLLUP
(
POS_TRANS_ID INTEGER DEFAULT
(NEXT VALUE FOR SCMSA_HIST.KEY_GEN_SEQ)
NOT NULL IDENTITY ,
JOB_LOG_ID INTEGER,
DEALER_CODE VARCHAR(255),
STORE_ID VARCHAR(255),
TRANSACTION_DT TIMESTAMP,
QUANTITY INTEGER,
ROLLUP_TYPE VARCHAR(255),
CREATE_DT TIMESTAMP,
MAX_TRANSACTION_DT TIMESTAMP,
PROCESSED_FLAG VARCHAR(255),
CREATE_MONTH INTEGER,
CREATE_YEAR INTEGER
);
The Model class for the above table is as follows:
@Entity
@Table(schema = "SCMSA_HIST", name = "SCMSA_POS_TRANS_ROLLUP")
public class ScmsaPosTransRollup {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "SEQ")
@SequenceGenerator(name = "SEQ", sequenceName = "SCMSA_HIST.KEY_GEN_SEQ")
@Column(name = "POS_TRANS_ID")
private Long posTransId;
@Column(name = "JOB_LOG_ID")
private Long jobLogId;
@Column(name = "DEALER_CODE")
private String dealerCode;
@Column(name = "STORE_ID")
private String storeId;
@Column(name = "TRANSACTION_DT")
private Timestamp transactionDate;
@Column(name = "ROLLUP_TYPE")
private String rollupType;
@Column(name = "QUANTITY")
private Integer quantity;
@Column(name = "CREATE_DT")
private Timestamp createDate;
@Column(name = "MAX_TRANSACTION_DT")
private Timestamp maxTransactionDate;
@Column(name = "PROCESSED_FLAG")
private String processedFlag;
@Column(name = "CREATE_MONTH", insertable = false, updatable = false)
private Integer createMonth;
@Column(name = "CREATE_YEAR", insertable = false, updatable = false)
private Integer createYear;
public ScmsaPosTransRollup() {
}
//getter and setter
}
But, when I am trying to insert , the value for the "POS_TRANS_ID" is inserted as null. Can anyone please suggest me what am doing wrong here.
Upvotes: 2
Views: 1641
Reputation: 1863
I tried to reproduce your problem. What helps to me: 1. Scripts
CREATE OR REPLACE SEQUENCE IF NOT EXISTS KEY_GEN_SEQ
MINVALUE 1
MAXVALUE 999999999999999999
START WITH 1
INCREMENT BY 500
NOCYCLE
NOCACHE;
In create table DDL I replaced ID creation
POS_TRANS_ID INTEGER DEFAULT KEY_GEN_SEQ.NEXTVAL
NOT NULL IDENTITY ,
In Java class added initialValue and allocationSize to @SequenceGenerator, and changed strategy to SEQUENCE
@GeneratedValue(strategy=SEQUENCE, generator="SEQ")
@SequenceGenerator(name = "SEQ", sequenceName = "KEY_GEN_SEQ",initialValue = 1,allocationSize = 500)
And don't forget to define dialect in Hibernate props
hibernate.dialect=org.hibernate.dialect.H2Dialect
Upvotes: 1