【发布时间】:2018-05-18 07:03:30
【问题描述】:
嗯,我是 Hibernate 的新手,我的问题很简单。我找到了几个解释它的答案,但可能是我没有完全理解它并且我仍然卡住了。
我发现要映射外键,我需要映射一个实体,如下所示
// this is GroupEntity
// mapping bond_id from Bond table
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name ="bond_id")
private BondEntity bondEntity;
我相信这会将 BondEntity 表中的 bond_id 列映射到当前表的 bond_id。
现在如何在持久化该表的实体的同时将此 bond_id 设置为 DB。与其他列不同,此字段现在接受一个对象。
我尝试只设置bond_id,比如
BondEntity bondEntity = new BondEntity();
bondEntity.setBondId(1234); //remaining field of bondEntity not set
groupEntity.setBondEntity(bondEntity);
如果我继续尝试持久化这个实体,我会得到detached entity passed to persist in hibernate。
什么是正确的做法。可能是我没有正确理解它。
【问题讨论】:
-
请分享您尝试映射在一起的两个实体的代码。注释
@JoinColumn不与@OneToMany一起使用。见JPA JoinColumn vs mappedBy -
您没有在单值实体字段上指定
@OneToMany!那将是@OneToOne(或@ManyToOne)。 -
@pirho
@JoinColumn在 Hibernate 中与@OneToMany一起使用。 -
@v.ladynev 感谢您的指正。那么就不是
JPA。