Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA-从序列生成的Id始终为0_Java_Hibernate_Jpa_Oracle9i - Fatal编程技术网

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

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") @

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

根据我在各处找到的信息,以下是我在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左右


我哪里出错了?

我实际上解决了我的问题,而这恰好与我所揭露的情况没有直接关系

我试图持久化的这个对象是一个相对复杂的对象的一部分,在父对象中,我没有向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页面上找到的文档对此并不清楚。事实上,我找到了解决我问题的方法,下面是答案。