有三个表:
学生信息(student):
学生号,姓名,家庭地址
学生毕业评定信息(stu_post):
学生号,毕业鉴定(优秀、良好、一般、及格、不及格)
学生违章记录(stu_error):
学生号、错误信息、时间、上课教室关于这三个表做一个查询
学生号、姓名、错误信息、时间、家庭地址、毕业鉴定如果在oracle中,查询语句如下:
select a.学生号,姓名,错误信息,时间,家庭地址,毕业鉴定
from stu_error a, student b, stu_post c
where a.学生号=b.学生号(+)
and a.学生号=c.学生号(+)如果用java中,用jpa的sql语句如何实现啊?
多谢高手指点!
学生信息(student):
学生号,姓名,家庭地址
学生毕业评定信息(stu_post):
学生号,毕业鉴定(优秀、良好、一般、及格、不及格)
学生违章记录(stu_error):
学生号、错误信息、时间、上课教室关于这三个表做一个查询
学生号、姓名、错误信息、时间、家庭地址、毕业鉴定如果在oracle中,查询语句如下:
select a.学生号,姓名,错误信息,时间,家庭地址,毕业鉴定
from stu_error a, student b, stu_post c
where a.学生号=b.学生号(+)
and a.学生号=c.学生号(+)如果用java中,用jpa的sql语句如何实现啊?
多谢高手指点!
select
学生号,姓名,错误信息,时间,家庭地址,毕业鉴定
from
student str
inner join
stu_post post
inner ioin
stu_error error
on
(str.studentId=post.studentId and stu.studentId = error.studentId)--或者:select
学生号,姓名,错误信息,时间,家庭地址,毕业鉴定
from
student ,stu_post ,stu_error
where
student.studentId = stu_post.studentId
and
student.studentId = error.studentId
学生评价表B
学生违纪表CA表对于B表可以是1对多(可以没有,也可以有很多,但至少是1条),A表对C表可以是1对多(同前)伪代码:
A a = em.find(A.class,1);//找到学号是1的学生
然后
a.getB();//获得a学生的评价信息,如果没有那就没有,如果有那就有。
Set(C)sets = a.getC();//获得a学生的违纪信息集合
你不是要用JPA,给我SQL干啥。好囧。
简单说 只要你知道 学生的编号 你就知道 这个学生的全部 信息。写SQL干啥 你要用的 是 JPA JPA是规范 根本不在乎SQL是如何拼写的。面向对象的查询。。
不明白 (萌动的眼神) 说:
写SQL干啥 你要用的 是 JPA JPA是规范 根本不在乎SQL是如何拼写的。
是社么意思。
另外,javaxiaochouyu 说:
select
学生号,姓名,错误信息,时间,家庭地址,毕业鉴定
from
student ,stu_post ,stu_error
where
student.studentId = stu_post.studentId
and
student.studentId = error.studentId
这样的话,我理解只能查询出已毕业学生的信息。
我理解应该写成:
select
学生号,姓名,错误信息,时间,家庭地址,毕业鉴定
from
student s
left join stu_post post on s.学生号=post.学生号
left join stu_error error on s.学生号=error.学生号
可是报 生成query错误,显然是sql语句不对,我在网上到处搜索,好像需要配ManyToOne 或者OneToMany,
可我这三个表并不是完全意义上的ManyToOne或OneToMany的表啊。
多谢指点!
我按照你的提示试过,但会报错:
javax.servlet.ServletException: java.lang.IllegalArgumentException: An exception occured while creating a query in EntityManager
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:422)是不是我没有配置manytoone 或者 onetomany的原因啊。
是不是所有使用join 的地方都必须配置manytoone 或者 onetomany啊。
如果有,检索主表出来的实体应该直接可以通过get方法得到你需要的信息
三个表是独立的实体,没有用jpa建立关联,实际上我就不会用jpa建立关联,刚学习jpa。
我在上面提到过,这样写不行的。
我理解应该在jpa中配置表之间的关系,可是我不会配。
学生号,姓名,错误信息,时间,家庭地址,毕业鉴定
from
student s
left join stu_post post on s.学生号=post.学生号
left join stu_error error on s.学生号=error.学生号
可是报 生成query错误,显然是sql语句不对,我在网上到处搜索,好像需要配ManyToOne 或者OneToMany,
可我这三个表并不是完全意义上的ManyToOne或OneToMany的表啊。
多谢指点!