2011-03-07 2 views
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; 
    } 
} 

답변

0

예, 양방향 연관은 사용자가 수동으로 처리합니다 (표시된 것처럼)

+0

그러면 ElementFactory의 사용 사례는 무엇입니까? 그것은 아무 목적도 제공하지 않았다. –

+0

@ 파샤 - elementfactory에서 '사람'이 어디에서 왔는지 나는 볼 수 없다. 잘못된 사람이거나 null 일 수 있습니다. – Bozho

+0

@Pasha - 당신이 디버깅 할 수 있는지 여부 1. 그것은 null이 아닙니다. 2. 그것은 나중에 저장하는 동일한 객체입니다. – Bozho