@Entity
public class Person implements Serializable{
@Id
@GeneratedValue
private int id;
private String name;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "person")
private List<Car> cars;
//getters and setters
}
@Entity
public class Car implements Serializable{
@Id
@GeneratedValue
private int id;
private String name;
@ManyToOne
@JoinColumn(name = "person_id")
private Person person;
// getters and setters
}
而且..我这样用它..
Person per = new Person();
per.setName("some");
Car car1 = new Car();
car1.setName("Ford");
Car car2 = new Car();
car2.setName("WagonR");
//s.save(car1);
//s.save(car2);
per.setCars(new ArrayList<Car>());
per.getCars().add(car1);
per.getCars().add(car2);
s.save(per);
现在..表Car
有一列person_id
,但它显示了两辆车的null
..我在这里做错了什么?正确填写表Person
。如果我从mappedBy
表中移除“Person
”,而是在此处包含@JoinColumn
...那么它可以正常工作。
答案 0 :(得分:1)
尝试拨打car.setPerson(per)
。
答案 1 :(得分:1)
通过映射,关系的所有者是Car而不是Person ......这就是为什么在保存Person时,Car不会被保存。如果您删除了mappedBy
,那么该关系的所有者就会变成Person,并且您会得到预期的行为!