Java HibernateeException:缺少序列或表,SQLIntegrityConstraintViolationException:ORA-01400:无法在中插入NULL

Java HibernateeException:缺少序列或表,SQLIntegrityConstraintViolationException:ORA-01400:无法在中插入NULL,java,oracle,hibernate,database-sequence,Java,Oracle,Hibernate,Database Sequence,我对hibernate还相当陌生,这很奇怪——我正在尝试使用eclipse在tomcat上运行Spring hibernate rest应用程序。 我有一个定义如下的实体- @Entity @Table(name = "bdp_billing_rec_ref") @NamedQueries(value = { @NamedQuery(name = BillingRecordReference.BILLING_RECORD_REF_DELETE_OLDER_THAN, query = "DELET

我对hibernate还相当陌生,这很奇怪——我正在尝试使用eclipse在tomcat上运行Spring hibernate rest应用程序。 我有一个定义如下的实体-

@Entity
@Table(name = "bdp_billing_rec_ref")
@NamedQueries(value = { @NamedQuery(name = BillingRecordReference.BILLING_RECORD_REF_DELETE_OLDER_THAN, query = "DELETE FROM BillingRecordReference WHERE updated<:date") })
public class BillingRecordReference {
  @Id
  @SequenceGenerator(name = "bdp_billing_rec_ref_id_seq_gen", sequenceName = "bdp_billing_rec_ref_id_seq")
  @GeneratedValue(strategy = GenerationType.AUTO, generator = "bdp_billing_rec_ref_id_seq_gen")
  @Column(name = "db_id")
  private Long dbId;
    <dependency>
       <groupId>com.oracle</groupId>
       <artifactId>ojdbc6</artifactId>
       <scope>runtime</scope>
     </dependency>
Caused by: org.hibernate.HibernateException: Missing sequence or table: bdp_billing_rec_ref_id_seq
数据库中存在bdp账单记录参考id序列,我已确定。 在谷歌搜索了这个问题后,根据建议,我将GenerationType.AUTO修改为GenerationType.IDENTITY,并且成功了。Web服务器开始运行

现在,应用程序尝试在命中rest端点后将行插入到BillingRecordReference表中。此时,hibernate引发另一个异常,并且并没有将值插入到表中

java.sql.SQLIntegrityConstraintViolationException: ORA-01400: cannot insert NULL into ("DPOWNERA"."BDP_BILLING_REC_REF"."DB_ID")
oracle版本是12c,我运行的是JAVA-openjdk版本“1.8.0_181-1-ojdkbuild”,Tomcat版本是8.0.5


请说明这里可能出了什么问题

您是否尝试将策略更改为
GenerationType.SEQUENCE
?并将
unique=true、updateable=false、nullable=false
添加到
@Column(…)
GenerationType。IDENTITY
要求该列是实际的IDENTITY列才能工作。作为主键,该值不允许为null,这在使用标识插入时是如此column@Dumbo是的,先生,我确实更改为Generation type.SEQUENCE,在本例中,异常是-缺少sequencetry native query annotation
@query(value=“SELECT seq_name.nextval FROM dual”,nativeQuery=true)