对于比较复杂的SQL,我喜欢使用Hibernate的native SQL功能。
先在hbm.xml中写一个namedSQL,再在程序中调用这个namedSQL。也许这个会适合你的情况。如果你一定要使用HSQL,看看“select t.* from EaminationRoomPlan t”这个HSQL能执行吗?如果它不能执行,就看看配置文件是否正确;
如果能执行,请你检查t.fkClassroom和b.pk是不是相同的类型,如果t.fkClassroom是Classroom类型的变量,而b.pk是Integer的,那么你的hSQL当然不能执行!这时,你要把hSQL写成:
String hql = " select t.* from ExaminationRoomPlan t, Classroom b where t.fkClassroom.pk = b.pk order by b.teachingBuilding, b.floor, b.no
先在hbm.xml中写一个namedSQL,再在程序中调用这个namedSQL。也许这个会适合你的情况。如果你一定要使用HSQL,看看“select t.* from EaminationRoomPlan t”这个HSQL能执行吗?如果它不能执行,就看看配置文件是否正确;
如果能执行,请你检查t.fkClassroom和b.pk是不是相同的类型,如果t.fkClassroom是Classroom类型的变量,而b.pk是Integer的,那么你的hSQL当然不能执行!这时,你要把hSQL写成:
String hql = " select t.* from ExaminationRoomPlan t, Classroom b where t.fkClassroom.pk = b.pk order by b.teachingBuilding, b.floor, b.no
解决方案 »
- hibernate是操作对象快还是写hql针对属性做update或delete快呢
- SapNetweaver高手看看这个错误怎么处理?
- 问一个关于servlet 跳转的问题 用RequestDispatcher dispatcher跳转原页面 javascript失效
- Jboss中hibernate调用数据连接池问题!
- JAVA群23460446(我们关注开源的时候更多关注的是技术,欢迎各位钻研技术的人士加入)
- 高分请教Intra-mart问题
- 关于structs结构的java系统,不知道在效率以及速度上等等,能否请高手指点一下
- 想让大家讨论下,在ejb web server 方面的好书都有那些,造福大家
- RMI Class Loader disabled问题
- 唯品会购物袋问题
- hibernate生成持久化类的问题
- 高分请教一个中文问题
试了冒用。。
sqlQuery.addEntity("t", ExaminationRoomPlan.class)不加上这个就报错。。
一般来说是把一个Classroom的对象做为ExaminationRoomPlan的一个属性,然后在hbm文件中配置这两个类的关系(一对一、一对多、多对多)
在写hql时直接这样写——
select t.* from ExaminationRoomPlan t join t.classroom b where b.otherColumn = ? order by b.teachingBuilding, b.floor, b.no
hibernate会根据配置文件自动决定t中的那个字段跟b中的某个字段相等
中的t.*改为{t.*}
真有一种把电脑砸了的冲动
呵呵
别着急,慢慢来
你可以尝试把SQL精简下,看是配置问题还是语句问题
---------
先加as试试,如果还不行
自己写一个带main 的小测试类,这种测试类可以有简单明了的出错信息,不带main的类,是没有出错信息的.^_^别那么急,大家都是这么活着的,对自己要求低点
? hibernate支持hql,也支持原生SQL。sql = select t.* from examination_room_plan t, classroom b where t.FK_CLASSROOM = b.pk order by b.teaching_building, b.floor, b.no
中的t.*改为{t.*}你的这种写法我早就写过了,是不行的。
我就是用的SQL写的。
final String sql="select {fi.*} from FuncInfo fi " +
"left join RoleSubFunc rsf on fi.FuncId=rsf.FuncId "+
"left join RoleInfo ri on rsf.RoleId=ri.RoleId "+
"left join UserRole ur on ri.RoleId=ur.RoleId "+
"where ur.UserId='"+userId+"'";
return this.getHibernateTemplate().executeFind(new HibernateCallback(){
public List doInHibernate(Session session) throws HibernateException, SQLException {
Query query=session.createSQLQuery(sql)
.addEntity("fi", FuncInfo.class);
return query.list();
}
});
}
我也是初学hibernate,感觉很多时候复杂sql语句的错误原因是没有指定好表的别名。