【问题标题】:New entity persisted with NULL id (id=0)新实体以 NULL id (id=0) 持久化
【发布时间】:2020-02-21 13:51:02
【问题描述】:

我正在使用 Hibernate 4.3.11。 我有以下实体:

@Entity
@Table(name="ESP_RETARD")
public class ESP_RETARD implements Serializable
{
    private static final long serialVersionUID = 1L;

    @Id
    @SequenceGenerator(name = "pk_seqret", sequenceName = "ESP_RETS_SEQ1", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "pk_seqret")
    @Column(nullable = false)
    @NotNull
    private long idRetard;

我尝试在 ESP_RETARD 上保留一个新实体。

但是,我遇到了一个问题:添加了一个新实体,但是,它的 id 为 0

第二次添加新的,我得到了这个异常:

javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException:不能 执行语句

...

引起:org.hibernate.exception.ConstraintViolationException:可以 不执行语句

...

原因:java.sql.SQLException: ORA-00001: 唯一约束 (EDTINGA.SYS_C009525) 违反

知道:当我使用时:

  • 休眠 3 与 those jars, 我没有收到这个问题。
  • 但是,当我使用 those jars 升级到 Hibernate 4.3.11 后,我遇到了这个异常。

==> 所以这是 jar 的问题,我想它错过了 jar(s) 必须添加到 Hibernate 4.3.11

您对解决该问题有任何想法吗? 非常感谢先生。

【问题讨论】:

    标签: oracle10g hibernate-4.x


    【解决方案1】:

    您可以尝试删除整个实体,然后使用 新表名新列名 作为 id 重新创建它。

    别忘了更改@SequenceGenerator@GeneratedValue 的提名。

    确实,@Column(nullable = false)@NotNull 都没有必要使用。

        @Id
        @SequenceGenerator(name = "pk_seqret1", sequenceName = "RETS_SEQ1", allocationSize = 1)
        @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "pk_seqret1")
        private long idRetard;
    

    HTH。

    【讨论】:

      猜你喜欢
      • 2017-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-18
      • 2019-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多