2013-12-26 2 views
0

Я использую hibernate, с play framework 1.2.4.
Предположим, что у меня есть модель с именем Person и модель с именем IdentityInfo, и отношение состоит в том, что у человека может быть только одна информация об идентичности.
И я хочу использовать ленивый принести на IdentityInfo fetching.Here мой Код модели:hibernate lazy fetch не работает должным образом

public class Person { 
    // ... some code 

    @OneToOne(fetch = FetchType.lazy) 
    @JoinColumn(name = "info_id_fk") 
    private IdentityInfo info = null; 

    public IndentityInfo getInfo(){ 
     return this.info; 
    } 

    public void setInfo(IdentityInfo info){ 
     this.info = info; 
    } 
} 

public class IdentityInfo { 
    // ... some code 
    public String xxx = null; 

    public String getXxx(){ 
     return this.xxx; 
    } 

    public void setXxx(String xxx){ 
     this.xxx = xxx; 
    } 


} 

Но вот проблема (довольно странно): У меня есть список человека, и мне нужно, чтобы пройти идентификация всех персональных объектов.
Идентификатор личности человека человека CANT загружается должным образом (человек имеет соответствующую идентификационную информацию).
MORE specific, Когда я использую , java отражает, чтобы получить идентификационную информацию человека, иногда атрибут info равен null (но это не так).

Но когда я просто использую person.info.getXxx(), значение атрибута пришло.

И у него не было сообщений об ошибках. Программа прошла нормально.

У кого-нибудь есть идеи?

+0

просьба сообщить точные сообщения об ошибках и/или трассировку стека – geert3

+0

там не ошибка messages.the программы шло нормально. – Marks

+0

Итак, getInfo возвратил null? Вы уверены, что в БД есть IdentityInfo, соответствующий Info_id_fk этого Person? Если их нет, то нормально, что getInfo возвращает null без ошибок. – geert3

ответ

0

Почему метод setter не имеет параметра?

попробовать это

public void setInfo(IndentityInfo info) 
     { 

     Hibernate.initialize(info);  
     this.info = info; 

     } 
+0

это работает для меня. – Marks

+1

Оказалось, что проблема возникла из-за того, что в Hibernate вы должны использовать Getter для получения атрибутов, поэтому hibernate действительно загружает данные и инициализирует объект. – Marks

Смежные вопросы