比如有2个表
students 、classessql:select c.* from students as s,classes as c where s.classid=c.classid and s.id='001'
我要通过一个学生id查出该学生所选科的班级。
比如:001这个学生选课为数学、语文。其中数学在一班、语文在二班。
那么我的要求就是输入001这个学号,要查出一班、二班这两个班级。
sql就是直接写的查询语句,我想在hibernate中实现上述的查询,不知道怎么写这个sql,大家帮帮忙吧
说明:在hibernate配置文件中没有配置这两个表的关联!配置文件也不能更改!
students → Student.java
classes → Classes.java
我写的是:
select new Student from Student as s,Classes as c where s.classid=c.classid and s.id=?
可是不行啊,麻烦大家了!指条路吧。
students 、classessql:select c.* from students as s,classes as c where s.classid=c.classid and s.id='001'
我要通过一个学生id查出该学生所选科的班级。
比如:001这个学生选课为数学、语文。其中数学在一班、语文在二班。
那么我的要求就是输入001这个学号,要查出一班、二班这两个班级。
sql就是直接写的查询语句,我想在hibernate中实现上述的查询,不知道怎么写这个sql,大家帮帮忙吧
说明:在hibernate配置文件中没有配置这两个表的关联!配置文件也不能更改!
students → Student.java
classes → Classes.java
我写的是:
select new Student from Student as s,Classes as c where s.classid=c.classid and s.id=?
可是不行啊,麻烦大家了!指条路吧。
那用excutesqlquery去执行sql吧
别用hql了
一个个字段要打出来不能用*
select xxx,xxx,xxx from student s left join classes c on s.classid = c.classid and
我的sql是这样写的:
select s.name from student s
只查一个表的一个字段都不成功啊。
这么写(HQL)试试:select c from Student as s,Classes as c where s.classid=c.classid and s.id=?
因为HQL是面向对象查询语句,所以s.classid需要在Student这个类里面定义的classid字段,注意大小写;c.classid需要在Class这个类里面定义classid这个字段,注意大小写;s.id需要Student这个类里面定义id这个字段,同样注意大小写。
hql:
slelect new 包名.Classes(c.xx(参数写全)) from Students sa s,Classes as c where s.classid=c.classid and s.id='001' Classes里面要写构造函数接受全部参数 并设置值
select new 包名.类名(参数写全) from Student 还不行,没有测试通过;不管怎样,谢谢大家!