JPA(休眠)映射OneToMany不正确?

Posted

技术标签:

【中文标题】JPA(休眠)映射OneToMany不正确?【英文标题】:JPA (hibernate) Mapping OneToMany incorrect? 【发布时间】:2011-05-10 13:46:38 【问题描述】:

嗨 我是 JPA 的新手,我认为我的映射注释有问题 我正在使用带有 JPA 2 的休眠 3.6.1 最终版本

这是我的课:

    public class Resident 
    ...
        @OneToMany(orphanRemoval = true, mappedBy = "resident")
        @Cascade(org.hibernate.annotations.CascadeType.ALL)
        public List<ResidentInfo> infos;
    

    public class ResidentInfo 
    ...
        @ManyToOne(optional = false)
        public Resident resident;
    

当我第一次尝试保存数据时,一切正常。

但是,当我尝试使用 save() 方法更新记录时,似乎没有应用参数 orphanRemoval。

例如,如果 infos 是 4 条记录的列表,我通过删除 2 条记录来更新它,则删除的 2 条记录不会从数据库中删除

我还有一个问题,当我尝试将一个元素添加到我的列表信息时,我没有错误,但添加的元素没有记录在数据库中。

为了记录数据,我只是使用了 resident.save(),也许我错了?

【问题讨论】:

【参考方案1】:

    别忘了加

    @Column(name = "resident")
    

    到多对一关系?

    你在使用类似的东西

    session.startTransaction()` 
    

    session.getTransaction().commit()` ?
    

【讨论】:

以上是关于JPA(休眠)映射OneToMany不正确?的主要内容,如果未能解决你的问题,请参考以下文章

我在@OneToMany 休眠映射中遇到错误?

非冗余休眠列表映射 (OneToMany)

休眠:覆盖(实体)超类的 OneToMany 映射字段?

JPA @ManyToOne 用于休眠

JPA 2.0 (Hibernate) 使用 @JoinTable 为 @OneToMany 生成不正确的连接表 PK

注释 ConcurrentHashMap 时,在休眠中“非法尝试将非集合映射为 @OneToMany、@ManyToMany 或 @CollectionOfElements”