1

Hibernateを使用して非常に単純なクラスを永続化しようとしています。私はSpringを使用していませ。マッピングファイルを使用していません。単なる注釈です。の代わりに使用しています。それでも、JUnitテスト(クラスとは別のパッケージにあるテストテスト)を実行すると、が表示されます。javax.persistence.Entityorg.hibernate.EntitytestAddUser caused an ERROR: Unknown entity: restauracja.PersonalInfo

私は何が間違っているのですか?

更新:これは、セッションファクトリを初期化する方法です。

private final static SessionFactory factory;
static {
    Configuration cfg = new AnnotationConfiguration().configure("hibernate.cfg.xml");
    factory = cfg.buildSessionFactory();
}

そして、テストを実行します。

@Test
public void testAddUser() {
    Session session = factory.openSession();
    Transaction tx = session.beginTransaction();

    PersonalInfo pi = new PersonalInfo("Jan", "Kowalski", "Krótka 6a", "Gniezno", 123456l);

    session.saveOrUpdate(pi);
    tx.commit();
    session.close();

}
4

1 に答える 1

4

通常、Hibernate は、それが認識し、アノテーションを調査したクラスのコレクションを持っています。restauracja.PersonalInfoクラスをそのコレクションに追加する必要があると思います。たとえば、テスト ハーネスでは次のようなことを行います。

AnnotationConfiguration cfg = new AnnotationConfiguration();
for (Class<?> clazz : databaseConfig.getHibernateClasses()) {
    cfg.addAnnotatedClass(clazz);
}

特定の単体テストで使用される各クラスは、テストに必要なすべてのクラスをhibernateそのリストに含める必要があることを指定する必要があります。クラスのリストはおそらくhibernate.cfg.xmlファイルにあり、欠落しているクラスをそのリストに追加するだけでよいと思います。

于 2012-05-08T20:51:03.967 に答える