终于解决了,是因为用myeclipse自动添加struts2 jar 包的时候会添加antlr-2.7.2.jar,但是SSH集成后实际上又添加了一个antlr.2.7.6.jar,所有导致冲突,但是系统又检测不出来,现在只有删除掉2.7.2.jar包,而且检查一下tomcat部署的项目是不是也存在两个。重新部署OK了。太激动了。搞了很久了,希望能给大家一点作用。
楼主没有明白hibernate是这么查询的 from obj中obj是映射的类而不是简单的说是字符。从实体中from出来,通过xml映射到数据库。
public List<Obj> findByTopic(String name) { return getSession().createQuery("From Obj t WHERE t.name=:name1") .setParameter("name1", name) .list(); }
楼主看看下面的这段代码,应该就明白了吧。自己再去看看hibernate的API吧public List<Obj> findByTopic(String name) {
return getSession().createQuery("From Obj t WHERE t.name=?")
.setParameter(0, name)
.list();
}
System.out.println("bbbbb");
try{
Query query = session.createQuery("FROM " + clazz.getName() + " WHERE id = ?").setParameter(0, ids[0].toString());
System.out.println("aaaaaa");
//Query query = session.createQuery("FROM " + clazz.getName() + " WHERE id = " + ids[0].toString());
System.out.println(query);
return query.list();
}catch (Exception e){
e.printStackTrace();
}
输出结果为:
bbbbb
2014-03-28 16:01:15,978 DEBUG (org.apache.struts2.dispatcher.ng.PrepareOperations:68) - skipping cleanup counter=1
return getSession().createQuery("From Obj t WHERE t.name=:name1")
.setParameter("name1", name)
.list();
}