2

如何检查对象是否已映射?

我收到一个错误,因为我有一个未在 Hibernate 中映射的对象

org.hibernate.hql.ast.QuerySyntaxException: Product is not mapped [select prod from com.neila.Product product

,如果该对象已被映射,我想在执行代码之前进行测试。

4

3 回答 3

0

检查您是否com.neila.Producthibernate.cfg.xmlMapping Resource(如果您使用 XML 映射)或 Mapping Class(如果您使用 Annotations)表单中。

于 2013-09-13T08:53:30.190 回答
0

考虑以下示例。

假设我有一个名为Test.java的实体。

这在 Hibernate 中没有映射,我尝试保存该类的一个实例。

Test test = new Test();
if (configuration.getClassMapping(Test.class.getName()) != null) {
       Session session = sessionFactory.openSession();
       Transaction tx = session.beginTransaction();
       session.saveOrUpdate(test);
       tx.commit();
       session.close();
}

这里configuration&分别sessionFactory代表org.hibernate.cfg.Configuration&的实例org.hibernate.SessionFactory

如果删除 if 条件并直接尝试保存 Test 类的实例,则会出现异常。

于 2013-09-13T09:02:12.920 回答
0

这个我试过

boolean isMapped = getSession().getSessionFactory().getClassMetadata(
        "package.myClass") != null;

    if (!isMapped ) {
      -- my query
    }
于 2013-09-13T10:55:36.107 回答