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

时间:2011-05-10 13:46:39

标签: hibernate orm jpa mapping

您好 我是JPA的新手,我认为我的映射注释存在问题 我正在使用hibernate 3.6.1 final和JPA 2

以下是我的班级:

    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 个答案:

答案 0 :(得分:0)

  1. 你不要忘记添加

    @Column(name = "resident")
    

    到ManyToOne关系?

  2. 您使用的是

    session.startTransaction()` 
    

    session.getTransaction().commit()` ?