hibernate mapping验证对象是否已映射

时间:2013-09-13 08:39:39

标签: hibernate

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

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

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

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

3 个答案:

答案 0 :(得分:0)

检查映射资源(如果使用XML映射)或映射类(如果使用注释)表单中的com.neila.Product中是否有hibernate.cfg.xml

答案 1 :(得分: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类的实例,你会得到异常。

答案 2 :(得分:0)

我试过这个,

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

    if (!isMapped ) {
      -- my query
    }