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不正确?的主要内容,如果未能解决你的问题,请参考以下文章
JPA 2.0 (Hibernate) 使用 @JoinTable 为 @OneToMany 生成不正确的连接表 PK
注释 ConcurrentHashMap 时,在休眠中“非法尝试将非集合映射为 @OneToMany、@ManyToMany 或 @CollectionOfElements”