2012-05-31 24 views
0

我試過了文檔,但什麼也沒有。我試圖在谷歌和計算器上搜索它,但仍然沒有幫助。我有一個單身人士課程,這個班級與另一個班級有一個私人關係。這是我的代碼。在hibernate中映射到底是什麼意思?

@Entity 
public class HomeLibrary extends BaseModelObject { 
    @OneToMany(mappedBy = "homeLibrary", cascade = { CascadeType.ALL }) 
    private Collection<Book> books = new ArrayList<Book>(); 

    private static HomeLibrary sharedHomeLibrary = new HomeLibrary(); 

    public static HomeLibrary getSharedHomeLibrary() { 
     return sharedHomeLibrary; 
    } 

    public Collection<Book> getBooks() { 
     return books; 
    } 

    public void setBooks(Collection<Book> books) { 
     this.books = books; 
    } 

    private HomeLibrary() { 
    } 
} 

我在測試中出錯。看起來桌子不能建造。

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [HibernateApplicationContext-aop.xml]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: @OneToOne or @ManyToOne on edu.fudan.ss.persistence.hibernate.Book.homeLibrary references an unknown entity: edu.fudan.ss.persistence.hibernate.HomeLibrary 

回答

0

Hibernate需要您的默認構造函數存在於以創建實體,因爲你的構造隱藏在它不能創建HomeEntity

任一構造函數都應該是public或者package的可見性,hibernate應該可以使用setAccessible(true)//注意我還沒有試過包可見性選項。

休眠和一般框架誰創建實體使用Class<T>.newInstance()通過反射。

mappedBy表示映射是由擁有方完成的,相關不需要定義映射。

所以在你的情況下,如果你正在HomeLibrary中定義映射,或者反過來,你會將mappedBy放在Book中。

SO上的post講述瞭如何通過Factory方法創建對象,您可以使用它來獲得單例對象。

+0

因此沒有辦法存儲一個單身人士? – yoyosir

+0

@ user1214321更新了我的文章 – mprabhat