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

问题描述 投票:0回答:1

我正在使用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)被违反

知道:当我使用时:

  • 休眠3those jars,我没有收到这个问题。
  • 但是一旦我用those jars升级到Hibernate 4.3.11,我就遇到了这种麻烦。

==>这是jar的问题,我想必须将其遗漏的jar添加到Hibernate 4.3.11

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

oracle10g hibernate-4.x
1个回答
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。

© www.soinside.com 2019 - 2024. All rights reserved.