当前位置: 首页 > 知识库问答 >
问题:

H2数据库向主键插入null

薛兴言
2023-03-14
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
);
@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
}

共有1个答案

范书
2023-03-14

我试图重现你的问题。对我有帮助的事情:1。脚本

CREATE OR REPLACE SEQUENCE IF NOT EXISTS KEY_GEN_SEQ
   MINVALUE 1 
   MAXVALUE 999999999999999999
   START WITH 1
   INCREMENT BY 500
NOCYCLE
NOCACHE;

在创建表DDL中,我取代了ID创建

 POS_TRANS_ID INTEGER DEFAULT  KEY_GEN_SEQ.NEXTVAL 
    NOT NULL IDENTITY ,

在Java类中,将initialValue和allocationSize添加到@SequenceGenerator中,并将策略改为SEQUENCE

@GeneratedValue(strategy=SEQUENCE, generator="SEQ")
@SequenceGenerator(name = "SEQ", sequenceName = "KEY_GEN_SEQ",initialValue = 1,allocationSize = 500)
hibernate.dialect=org.hibernate.dialect.H2Dialect
 类似资料:
  • 我正在inMemory数据库中插入数据,当插入数据时,我得到了一个问题, 使用boot、JPA、H2db在内存中插入数据的示例程序 > 创建Pojo并使用JPA注释进行注释 > 配置在app.prop:中 在data.sql文件中添加了给定表 为data.sql中提到的转换添加了名称。 在哪里配置;在Springboot中? 波乔 控制器 错误原因:对名为'in memorydatabaseShu

  • 我想向数据库中插入值,但它无法工作,尽管我的代码在用作存储过程时运行良好。我需要使用按钮点击来存储值。请告诉我代码有什么问题。它没有显示任何错误或异常,但表中的数据没有更新

  • 问题内容: 从Actor中读取的文件:Zac Efron 传记:他出生于加利福尼亚州的圣路易斯·奥比斯波,并在阿罗约·格兰德附近长大。在几集《夏姆兰》(2004)的客串中,他以女孩疯狂的卡梅隆·贝尔的身份参加常规演出。埃夫隆还出演过许多飞行员,例如卡尔·兰克(Carl Laemke)的《大世界》(2003)(电视)和三重播放(2004)(TV)。 More_Bio:Efron于2006年6月毕业于

  • 利用INSERT语句将数据插入表中 数据插入 用来插入(添加)行到数据库。 插入完整的行 插入行的一部分 插入某些查询结果 插入完整的行 指定表名和被插入到新行中的值 编写依赖与特定列次序的SQL语句,这样做有时会出错,但编写方便。 mysql> INSERT INTO Customers -> VALUES('1000000006', -> 'Toy Land', ->

  • 问题内容: 我想初始化一个H2数据库,但是我不确定记录是否存在。如果它们不存在,我什么都不愿做,但是如果它们不存在,我想写默认值。 像这样的东西: 问题答案: 以下内容适用于MySQL,PostgreSQL和H2数据库:

  • 我有一个CSV文件,如 我正在尝试使用函数将此文件读入数据库,如下所示 出于某种原因,我一直得到< code>SQL错误,指出列数不匹配。 该表是使用Hibernate / GORM创建的,并包含我尝试插入的字段。 select本身似乎可以工作,或者至少在单独执行时不会导致任何错误。我的说法有什么问题?