我有类人
public Person() {
//passports = new AutoPopulatingList<Passport>(Passport.class);
passports = new AutoPopulatingList<Passport>(new PassportFactory(this));
}
@Id
@Column(name = "PERSON_ID")
@GeneratedValue
public Integer getId() {
return id;
}
@Column(name = "FIRST_NAME")
public String getFirstName() {
return firstName;
}
@Column(name = "LAST_NAME")
public String getLastName() {
return lastName;
}
@Column(name = "MONEY")
public Double getMoney() {
return money;
}
@OneToMany(cascade = CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="person")
@JoinColumn(name="person_id")
public List<Passport> getPassports(){
return this.passports;
}
类(class)护照
@Id
@Column(name = "passport_id")
@GeneratedValue
public Integer getPassport_id() {
return passport_id;
}
@Column(name = "country_issue")
public String getCountry_issue() {
return country_issue;
}
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="person_id")
public Person getPerson(){
return person;
}
是双向的一对多关系。
一开始我是这样存钱的
session.save(person);
而且它没有在护照表中保存 person_id,然后有人告诉我这样做
for(Passport passport : person.getPassports())
{
passport.setPerson(person);
}
session.save(person);
这样做成功了!!
我的问题是,如果我使用 ElementFactory 并在护照中设置人员对象
public Object createElement(int index) {
Passport passport = new Passport();
passport.setPerson(person);
return passport;
那为什么我又要明确地把这个人设置成卑鄙的
这是我在 autopopulateList 中使用的 Passportfactory 类
public class PassportFactory implements AutoPopulatingList.ElementFactory {
private Person person;
public PassportFactory(Person person) {
this.person = person;
}
public Object createElement(int index) {
Passport passport = new Passport();
passport.setPerson(person);
return passport;
}
}
最佳答案
是的,双向关联是由用户手动处理的(就像你展示的那样)
关于java - 我是否总是需要在保存 Hibernate 主对象时显式设置子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5219657/