Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Hibernate OneToMany级联类型。全部重复_Hibernate_Jpa_One To Many - Fatal编程技术网

Hibernate OneToMany级联类型。全部重复

Hibernate OneToMany级联类型。全部重复,hibernate,jpa,one-to-many,Hibernate,Jpa,One To Many,我有两张桌子: @Entity @Table(name = "consultas_sql") public class ConsultaSQL implements java.io.Serializable { //... @OneToMany(mappedBy = "consultaSQL", orphanRemoval = true, cascade = CascadeType.ALL) private List<ParametroS

我有两张桌子:

@Entity
@Table(name = "consultas_sql")
public class ConsultaSQL implements java.io.Serializable {
    //...

    @OneToMany(mappedBy = "consultaSQL", orphanRemoval = true, 
            cascade = CascadeType.ALL)
    private List<ParametroSQL> parametros;

    //...
}
如果我创建一个ConsultaSQL类型的新对象并插入一个ParametroSQL类型的新对象,则此保存成功

问题是,当我在编辑ConsultaSQL时添加一个新的ParameterSQL时,它会使ParameterSQL加倍,换句话说,它会在数据库中重复保存

我想我的关系有问题。有人能帮我吗

对不起我的英语

谢谢大家


我编辑了这篇文章,添加了插入和更新的命令。以下代码:

public T insert(final T entity) {
    getEntityManager().persist(entity);
    return entity;
}

public T update(T entity) {
    return getEntityManager().merge(entity);
}

谢谢。

您能发布两种情况下插入数据的代码吗?我在问题中添加了插入和更新代码。感谢您发布了实际调用此插入和更新方法的代码,以及如何在这两个实体中定义ID?是的,如果您的代码中没有正确定义主键,就会发生这种情况。是的,我的代码中正确定义了主键。问题是当我在ConsultaSQL中添加新的ParameterSQL时。如果我在编辑已定义id的ConsultaSQL时添加此参数,则参数SQL(即没有id的新参数)将被复制。谢谢
public T insert(final T entity) {
    getEntityManager().persist(entity);
    return entity;
}

public T update(T entity) {
    return getEntityManager().merge(entity);
}