如何检查对象是否已映射?
我收到一个错误,因为我有一个没有在Hibernate中映射的对象
org.hibernate.hql.ast.QuerySyntaxException: Product is not mapped [select prod from com.neila.Product product
,如果该对象已经映射,我想在执行代码之前进行测试。
答案 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
}