0

ドキュメントを試しましたが、何もありません。私はグーグルとstackoverflowでそれを検索しようとしましたが、それでも助けはありません。シングルトンクラスがあり、このクラスは別のクラスと1対多の関係にあります。これが私のコードです。

@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
4

1 に答える 1

0

Hibernate は、エンティティを作成するためにデフォルトのコンストラクターが存在する必要があります。コンストラクターは隠されているため、HomeEntity.

コンストラクターはパブリックまたはパッケージの可視性である必要があり、休止状態は setAccessible(true) を使用できる必要があります // 注: パッケージの可視性オプションは試していません。

Class<T>.newInstance()リフレクションを介してエンティティの使用を作成する Hibernate および一般的なフレームワーク。

mappingBy は、マッピングが所有側によって行われることを意味し、依存側はマッピングを定義する必要はありません。

したがって、あなたの場合、Bookマッピングを定義している場合は、 mappedBy を配置しますHomeLibrary。その逆も同様です。

SO に関するこの投稿では、Factory メソッドを使用してオブジェクトを作成する方法について説明しています。それを使用して、シングルトン オブジェクトを作成できます。

于 2012-05-31T03:23:50.393 に答える