2
을 절약하면서 명시 적으로 나는 클래스 사람내가 항상 최대 절전 모드 주된 목적
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;
}
클래스 여권
@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;
}
그것은 양방향입니다 방향 onetomany 관계가 하위 객체를 설정해야합니까.
는 처음에 내가이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;
거기 여권에 사람 개체를 설정하고 만약 내가 명시 적으로 다시
이것을 Passportfactory 클래스를 비천한 사람을 설정해야하는 이유이었다 내가 autopopulateList에서 사용하고 있습니다
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;
}
}
그러면 ElementFactory의 사용 사례는 무엇입니까? 그것은 아무 목적도 제공하지 않았다. –
@ 파샤 - elementfactory에서 '사람'이 어디에서 왔는지 나는 볼 수 없다. 잘못된 사람이거나 null 일 수 있습니다. – Bozho
@Pasha - 당신이 디버깅 할 수 있는지 여부 1. 그것은 null이 아닙니다. 2. 그것은 나중에 저장하는 동일한 객체입니다. – Bozho