永发信息网

hibernate hql on关键字

答案:2  悬赏:30  手机版
解决时间 2021-03-17 16:42
  • 提问者网友:遁入空寂
  • 2021-03-17 03:18
from Classes c inner join Student s on c.id=s.classesId
Classes 和 Student 是一对多的关系,用的hql

1.s.classesId 是int类型,请问用什么代替on关键字或怎么实现?
2.如果用inner join 怎么使查询出来的数据是Classes对象,而不是Object对象数据(
select c from Classes c inner join .... 这样行吗?)

主要我的配置没有使用标签,是普通的字段配置如下:

(不太喜欢那种配置方式……)
最佳答案
  • 五星知识达人网友:不如潦草
  • 2021-03-17 04:21
设置Classes中对Student的导航,就可以不用设置on
具体的做法是在Classes中添加一个成员变量:
Set students=new HashSet();
在上面加上注解:
@OneToMany(cascade=CascadeType.ALL,mappedBy="class")
在Student中添加一个成员变量:
Classes class;
在上面加注解:
@ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
然后要取出class中的students,这个students就是这个class中包含的所有student的集合
(直接一句话取出需要的班级信息即可,不需要连接到学生。从班级信息类中的set中可以拿到这个班级里学生的信息。hibernate会自动帮你写连接查询的语句)

xml的配置的话,是在改完类之后在Classes的配置的class标签中加




在Student的配置的class标签中加

具体设置FetchType和CascadeType自己查下吧,我也忘记了,貌似是在many-to-one和one to many后面加fetch="join"
全部回答
  • 1楼网友:低音帝王
  • 2021-03-17 04:55
string hql = "select new map ( u.name as uname , u.age as uage ) from user u . 是这个new的意思吗 ? 这样就是查出的结果直接是map列表
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯