JPA - 从序列生成的Id始终为0

时间:2016-06-30 16:10:55

标签: java hibernate jpa oracle9i

我正在尝试使用JPA从我的数据库中的序列生成ID(Oracle 9i)

根据我在这里和那里找到的,这里是我在ID变量上设置的注释组:

@Id
@SequenceGenerator(name="PROCEDURENORMALE_SEQ_GEN", sequenceName = "PROCEDURENORMALE_SEQ")
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "PROCEDURENORMALE_SEQ_GEN")
@Column(name = "IDPROCEDURENORMALE", unique = true, nullable = false, precision = 10, scale = 0)
private long idProcedureNormale;

但是,每当我创建一个新对象时,此id始终设置为0,因此我无法持久保存数据。我尝试将策略从GenerationType.SEQUENCE更改为GenerationType.AUTO,没有任何改变。对于这个特定的表,序列号应该是大约8300。

我哪里出错了?

1 个答案:

答案 0 :(得分:0)

我实际上解决了我的问题,这个问题与我曝光的事情没有直接关系。

我试图坚持的这个对象是一个相对复杂的对象的一部分,在父对象中我没有将一个CascadeType添加到JPA映射注释中:

@OneToMany(fetch = FetchType.LAZY, mappedBy = "dossier")
private Set<Procedurenormale> proceduresNormales = new HashSet<>(0);

将此注释更改为以下内容解决了该问题:

@OneToMany(fetch = FetchType.LAZY, mappedBy = "dossier", cascade = CascadeType.ALL)
private Set<Procedurenormale> proceduresNormales = new HashSet<>(0);