gpt4 book ai didi

java - 为什么使用mappedBy时这种一对​​多映射会失败?

转载 作者:行者123 更新时间:2023-12-02 07:11:56 25 4
gpt4 key购买 nike

@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 已正确填写。如果我从 Person 表中删除“mappedBy”...并在此处包含 @JoinColumn...那么它就可以正常工作。

最佳答案

根据您的映射,关系的所有者是汽车而不是人...这就是为什么在保存人时,汽车不会被保存。如果您删除mappedBy,则关系的所有者将成为Person,并且您将获得预期的行为!

关于java - 为什么使用mappedBy时这种一对​​多映射会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15389562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com