hibernate hql on关键字
发布网友
发布时间:2023-09-14 14:21
我来回答
共2个回答
热心网友
时间:2024-11-02 12:46
设置Classes中对Student的导航,就可以不用设置on
具体的做法是在Classes中添加一个成员变量:
Set<Student> students=new HashSet<Student>();
在上面加上注解:
@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标签中加
<set name="students">
<key column="class"></key>
<one-to-many class="xxx.xxx.Student"/>
</set>
在Student的配置的class标签中加
<many-to-one name="class" column="classId"></many-to-one>
具体设置FetchType和CascadeType自己查下吧,我也忘记了,貌似是在many-to-one和one to many后面加fetch="join"
热心网友
时间:2024-11-02 12:47
hql没有on ,要想实现sql中的on的功能 你可以在配置文件classes.hbm.xml中配置:
<set name="" lazy="false" where="" cascade="none">
<key column="ID" update="false"></key>
<one-to-many class=""/>
</set>
其中where就是你所要的on.
根据你的要求 建议:
select c from Classes c left join fetch c.Student s where c.id=s.classesid