Java JPA-从序列生成的Id始终为0
我正在尝试使用JPA从数据库(Oracle 9i)中的序列生成ID 根据我在各处找到的信息,以下是我在ID变量上设置的注释组:Java JPA-从序列生成的Id始终为0,java,hibernate,jpa,oracle9i,Java,Hibernate,Jpa,Oracle9i,我正在尝试使用JPA从数据库(Oracle 9i)中的序列生成ID 根据我在各处找到的信息,以下是我在ID变量上设置的注释组: @Id @SequenceGenerator(name="PROCEDURENORMALE_SEQ_GEN", sequenceName = "PROCEDURENORMALE_SEQ") @GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "PROCEDURENORMALE_SEQ_GEN") @
@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左右
我哪里出错了?我实际上解决了我的问题,而这恰好与我所揭露的情况没有直接关系 我试图持久化的这个对象是一个相对复杂的对象的一部分,在父对象中,我没有向JPA映射注释添加级联类型:
@OneToMany(fetch = FetchType.LAZY, mappedBy = "dossier")
private Set<Procedurenormale> proceduresNormales = new HashSet<>(0);
@OneToMany(fetch=FetchType.LAZY,mappedBy=“dossier”)
private Set proceduresNormales=新哈希集(0);
将此注释更改为以下内容解决了此问题:
@OneToMany(fetch = FetchType.LAZY, mappedBy = "dossier", cascade = CascadeType.ALL)
private Set<Procedurenormale> proceduresNormales = new HashSet<>(0);
@OneToMany(fetch=FetchType.LAZY,mappedBy=“dossier”,cascade=CascadeType.ALL)
private Set proceduresNormales=新哈希集(0);
我实际上解决了我的问题,而这恰好与我披露的内容没有直接关系
我试图持久化的这个对象是一个相对复杂的对象的一部分,在父对象中,我没有向JPA映射注释添加级联类型:
@OneToMany(fetch = FetchType.LAZY, mappedBy = "dossier")
private Set<Procedurenormale> proceduresNormales = new HashSet<>(0);
@OneToMany(fetch=FetchType.LAZY,mappedBy=“dossier”)
private Set proceduresNormales=新哈希集(0);
将此注释更改为以下内容解决了此问题:
@OneToMany(fetch = FetchType.LAZY, mappedBy = "dossier", cascade = CascadeType.ALL)
private Set<Procedurenormale> proceduresNormales = new HashSet<>(0);
@OneToMany(fetch=FetchType.LAZY,mappedBy=“dossier”,cascade=CascadeType.ALL)
private Set proceduresNormales=新哈希集(0);
创建对象时不会生成ID。它是在您持久化它时生成的。请查看sequencenumber生成的相关信息,日志会说什么?感谢@JBNizet提供此信息。我在Oracle页面上找到的文档对此并不清楚。事实上,我找到了问题的解决方案,这是下面的答案。创建对象时不会生成ID。它是在您持久化它时生成的。请查看sequencenumber生成的相关信息,日志会说什么?感谢@JBNizet提供此信息。我在Oracle页面上找到的文档对此并不清楚。事实上,我找到了解决我问题的方法,下面是答案。