我有两张表叫做Person
and Address
。我映射的这些表一对多与 hibernate 使用注释。
然后在我的父实体中Person
我创建一个Set<Address>
举办儿童班。之后我创建一组地址并设置为Person
实体并设置 Person 自己的值。
我的问题是,当我保存时,父实体子实体不会保存在数据库中。
这是我的代码:
人.java
@Entity
@Table(name="PERSON")
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="personId")
private int id;
@Column(name="personName")
private String name;
@OneToMany(cascade =CascadeType.ALL,fetch = FetchType.EAGER)
@JoinColumn(name="personId")
private Set <Address> addresses;
地址.java
@Entity
@Table(name = "ADDRESS")
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "addressId")
private int id;
@Column(name = "address")
private String address;
@Column(name="personId")
private int personid;
My DAO:
public Person addNewPerson() {
Person per = new Person();
per.setName("aaaa person");
Set<Address> addressSet = new HashSet<Address>();
for(int i = 0; i<=3;i++){
Address ad = new Address();
ad.setAddress("aaa "+i);
addressSet.add(ad);
}
per.setAddresses(addressSet);
getHibernateTemplate().save(per );
}
这里的人正在我的表格中添加,但地址未保存。为什么?
双向是可能的,但单向是我的问题
The personId
列被映射两次:一次用于保存地址人员的外键,使用JoinColumn
注释,并作为常规一次int
地址栏中。
去除personId
地址中的字段。如果您希望从地址访问人员 ID,请将关联映射为双向 OneToMany/ManyToOne 关联。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)