有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在尝试使用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左右

我哪里出错了


共 (1) 个答案

  1. # 1 楼答案

    事实上,我解决了我的问题,这与我揭露的事情没有直接关系

    我试图持久化的这个对象是一个相对复杂的对象的一部分,在父对象中,我没有向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);