新实体以NULL ID(id = 0)持续存在

时间:2019-10-25 08:11:22

标签: oracle10g hibernate-4.x

我正在使用休眠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添加到 Hibernate 4.3.11

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

1 个答案:

答案 0 :(得分:0)

您可以尝试删除整个实体,然后使用新表名新列名作为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。