休眠:类未映射
问题描述:
休眠抛出一个奇怪的错误休眠:类未映射
休眠:选择user0_.userID如userID0_,user0_.password从用户user0_ password0_其中user0_.userID = '管理员' 和 user0_。密码= '管理员' org.hibernate.hql.ast.QuerySyntaxException: 动作没有被映射[从行动其中id = 'MADEX240214']在 org.hibernate.hql.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java: 181) at org.hibernate.hql.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:110)
我的代码有什么问题吗?
public String insertActions(ArrayList<Action> data , String[] check)
{
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query query = null;
try
{
for (int i = 0; i < data.size(); i++)
{
if(check[i].compareTo("Update")==0)
{
query = session.createQuery("update Action set Last = :Last ,"
+ " Adjusted_Last =:Adjusted_Last where idAction = :idAction");
query.setDouble("Last", data.get(i).getLast());
query.setDouble("Adjusted_Last", data.get(i).getAdjustLast());
query.setParameter("idAction", data.get(i).getIdAction());
int result = query.executeUpdate();
}
else
{
session.save(data.get(i));
}
}
}
catch (HibernateException e)
{
e.printStackTrace();
session.getTransaction().rollback();
return "ERROR";
}
session.getTransaction().commit();
return "SUCCESS";
}
答
什么是完整的堆栈跟踪?它似乎不是来自该部分的代码。错误是从'行动'中选择,而不是更新。
我注意到您的更新声明中,您将该表引用为“Action”。 HQL查询区分大小写。检查你的映射。 '动作'!= '行动'
答
由Hibernate 5.1开始,我们必须写的HibernateUtil这样的方式
公共类的HibernateUtil {
private static final SessionFactory SESSION_FACTORY;
static{
try {
StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build();
SESSION_FACTORY = new MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory();
} catch (Exception e) {
throw new ExceptionInInitializerError(e);
}
}
public static Session openSession() {
return SESSION_FACTORY.openSession();
}
}
发表您的hibernate.cfg.xml – user3487063 2014-09-12 13:44:56