如何检查对象是否已映射?
我收到一个错误,因为我有一个未在 Hibernate 中映射的对象
org.hibernate.hql.ast.QuerySyntaxException: Product is not mapped [select prod from com.neila.Product product
,如果该对象已被映射,我想在执行代码之前进行测试。
如何检查对象是否已映射?
我收到一个错误,因为我有一个未在 Hibernate 中映射的对象
org.hibernate.hql.ast.QuerySyntaxException: Product is not mapped [select prod from com.neila.Product product
,如果该对象已被映射,我想在执行代码之前进行测试。
检查您是否com.neila.Product
在hibernate.cfg.xml
Mapping Resource(如果您使用 XML 映射)或 Mapping Class(如果您使用 Annotations)表单中。
考虑以下示例。
假设我有一个名为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 类的实例,则会出现异常。
这个我试过
boolean isMapped = getSession().getSessionFactory().getClassMetadata(
"package.myClass") != null;
if (!isMapped ) {
-- my query
}