就Hibernate的一对多根据外键查询

问题描述

现问题如下:学生表sid(主键);sname;老师表tid(主键);tname;在老师类中privateSet<Student>students;//对象组合在老师的hbm.xml配置文件中配置<setname="students"table="STUDENT"><key><columnname="SID"/></key><one-to-manyclass="com.icar.entities.Student"/></set>第一次运行后会在服务器中自动生成两张表,在teacher表中多加了一列SID(外键)(但是在老师类中是没有这个属性的,只是数据库中通过映射配置的外键关联自动生成的一列)那么若现在我有老师的tid号想查找他的所有学生。该怎样写HQL语句或者用什么方法可以达到效果呢?

解决方案

解决方案二:
建议你反向生成,先创建数据库,然后生成实体或者先创建实体跟配置文件,然后生成数据库(实体中自己配置属性)
解决方案三:
按照你的配置,应该是student表中存在外键列SID引用teacher表的主键吧。
解决方案四:
hql:selectt.studentsfromTeachertwheret.id=tid;
解决方案五:
看法跟2楼一致
解决方案六:
引用1楼shijing266的回复:

建议你反向生成,先创建数据库,然后生成实体或者先创建实体跟配置文件,然后生成数据库(实体中自己配置属性)

反向生成有什么区别么?现在我数据库里的Strudent表示sid(主键),sname,老师表是tid(主键),tname,sid。但是我的老师实体类中没有sid这个属性啊,我Hql查询语句传了一个含sid的student对象过来。该怎么查?
解决方案七:
引用3楼u013972119的回复:

hql:selectt.studentsfromTeachertwheret.id=tid;

不是说HQL查询语句中没有select的么?
解决方案八:
引用2楼u013972119的回复:

按照你的配置,应该是student表中存在外键列SID引用teacher表的主键吧。

正好相反是student的sid列是主键被teacher表引为外键所以teacher表中多了一个列sid
解决方案九:
引用5楼LavenderDestiny的回复:

Quote: 引用1楼shijing266的回复:
建议你反向生成,先创建数据库,然后生成实体或者先创建实体跟配置文件,然后生成数据库(实体中自己配置属性)

反向生成有什么区别么?现在我数据库里的Strudent表示sid(主键),sname,老师表是tid(主键),tname,sid。但是我的老师实体类中没有sid这个属性啊,我Hql查询语句传了一个含sid的student对象过来。该怎么查?

区别在于实现方式不同,但是结果都是一样的,你到时候老师类里面会有学生对象,这个不用我说吧还有,你们用过hibernate反向生成么?或者用javaBean小工具也行
解决方案十:
引用7楼LavenderDestiny的回复:

Quote: 引用2楼u013972119的回复:
按照你的配置,应该是student表中存在外键列SID引用teacher表的主键吧。

正好相反是student的sid列是主键被teacher表引为外键所以teacher表中多了一个列sid

你确定?
解决方案十一:
引用8楼shijing266的回复:

Quote: 引用5楼LavenderDestiny的回复:
Quote: 引用1楼shijing266的回复:
建议你反向生成,先创建数据库,然后生成实体或者先创建实体跟配置文件,然后生成数据库(实体中自己配置属性)

反向生成有什么区别么?现在我数据库里的Strudent表示sid(主键),sname,老师表是tid(主键),tname,sid。但是我的老师实体类中没有sid这个属性啊,我Hql查询语句传了一个含sid的student对象过来。该怎么查?

区别在于实现方式不同,但是结果都是一样的,你到时候老师类里面会有学生对象,这个不用我说吧还有,你们用过hibernate反向生成么?或者用javaBean小工具也行

没有用过诶,难道这种方式生成的就不能查询吗?
解决方案十二:
引用9楼u013972119的回复:

Quote: 引用7楼LavenderDestiny的回复:
Quote: 引用2楼u013972119的回复:
按照你的配置,应该是student表中存在外键列SID引用teacher表的主键吧。

正好相反是student的sid列是主键被teacher表引为外键所以teacher表中多了一个列sid

你确定?

好吧,我搞反了是tid的主键给了student做外键。现在问题是我有存有tid的teacher对象,要查他的学生,该怎么查啊?
解决方案十三:
引用8楼shijing266的回复:

Quote: 引用5楼LavenderDestiny的回复:
Quote: 引用1楼shijing266的回复:
建议你反向生成,先创建数据库,然后生成实体或者先创建实体跟配置文件,然后生成数据库(实体中自己配置属性)

反向生成有什么区别么?现在我数据库里的Strudent表示sid(主键),sname,老师表是tid(主键),tname,sid。但是我的老师实体类中没有sid这个属性啊,我Hql查询语句传了一个含sid的student对象过来。该怎么查?

区别在于实现方式不同,但是结果都是一样的,你到时候老师类里面会有学生对象,这个不用我说吧还有,你们用过hibernate反向生成么?或者用javaBean小工具也行

这个和正反向生成应该没什么关系的,我只是要用HQL语句根据teacher的tid去查询他的学生而已。
解决方案十四:
HQL关系对象查询,利用实体对象来查询sql表,你现在的结果是单纯的Teacher类、单纯的Student类,两者没关系怎么查~
解决方案十五:
引用13楼shijing266的回复:

HQL关系对象查询,利用实体对象来查询sql表,你现在的结果是单纯的Teacher类、单纯的Student类,两者没关系怎么查~

有啊<setname="students"table="STUDENT"><key><columnname="TID"/></key><one-to-manyclass="com.icar.entities.Student"/></set>有一对多映射,在运行之后,会在数据库的student表自动生成一列tid,问题是我的实体类里没有这一属性,那么我要是想用hql查询语句就不知道用什么条件判断了

时间: 2024-08-29 03:25:08

就Hibernate的一对多根据外键查询的相关文章

hibernate 1对1 基于外键 关联

问题描述 hibernate 1对1 基于外键 关联 应该图中我都描述清楚了.没多深的应用.只是学习阶段遇到的不理解的地方. 求前辈们 指导 解决方案 Hibernate之基于外键映射的一对一(1-1)关联关系 解决方案二: 一对一,hibernate会自动的去维护orm关系映射

Entity SQL Language 三 Where/Exists/In/Like/参数及外键查询

上文写了关于Where及Select的基本操作,这一篇讲一下Where的进阶操作 先说一下查看所生成的SQL的方法,.ToTraceString() 例如: string entitySQL = "select value a from orders as a;";var query = db.CreateQuery<Orders>(entitySQL);Console.WriteLine(query.ToTraceString()); 参数 参数可以通过CreateQue

link环境下,外键查询出来的对象不止一个,join之后怎么就都没有了?

问题描述 link环境下,外键查询出来的对象不止一个,join之后怎么就都没有了? link环境下,外键查询出来的对象不止一个,join之后怎么就都没有了? 解决方案 http://www.th7.cn/Article/bc/nt/200904/352439.html 解决方案二: http://blog.sina.com.cn/s/blog_95cfa64601019vsy.html

link中如何通过外键查询查找不同类型的实体类?如何用泛型实现

问题描述 link中如何通过外键查询查找不同类型的实体类?如何用泛型实现 link中如何通过外键查询查找不同类型的实体类?如何用泛型实现 解决方案 http://zhidao.baidu.com/link?url=dAywmn5-CBLpCvxlXSzoSnUqMt8C-7JZHkmdnKZAUUsbxppa3QhGa6FtR9TyizmaFFt4wntYQt-O59scCUSew_

link 环境下,如何处理外键查询的多类型结构,外键多类型查询的实现是什么?

问题描述 link 环境下,如何处理外键查询的多类型结构,外键多类型查询的实现是什么? link 环境下,如何处理外键查询的多类型结构,外键多类型查询的实现是什么? 解决方案 http://www.iteye.com/problems/73405

求解:ef+lamda 根据外键查询 报 未将对象引用设置到对象的实例 有图

问题描述 根据外键查询,不应该报空引用吧?不知道是怎么回事同样的值,一个能过,一个过不了. 解决方案 本帖最后由 workhuihui 于 2015-07-14 23:47:20 编辑解决方案二:id传进的值也不是null解决方案三: 解决方案四:随机Guid.NewGuid()测试50都是成功,不知道为什么传的这个值就不行.解决方案五:是不是你在什么地方把context置空了解决方案六:监视下context解决方案七:点击查看详细就行了,这么能看得到什么异常呢?

【hibernate框架】一对一双向外键关联(Annotation实现)

一对一双向外键关联(Annotation方法): 一夫(Husband)一妻(Wife)的一对一双向外键关联 Husband和Wife实体类: package cn.edu.hpu.one2one; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import jav

【hibernate框架】一对一双向外键关联(XML实现)

以Student与StuIDCard一对一双向关联为例,说一下用XML实现两者的一对一双向关联. 学生与学生证之间的关联关系. Student.java: package cn.edu.hpu.model; public class Student { private int id; private String name; private int age; public int getId() { return id; } public void setId(int id) { this.id

外键查询-在java web中,有外键的servlet要怎么实现!

问题描述 在java web中,有外键的servlet要怎么实现! 在java web中,有外键的servlet要实现增删改查该怎么写?求一个简单的例子,急急急!!!!! 解决方案 http://blog.csdn.net/jspamd/article/details/11579447 解决方案二: http://bbs.csdn.net/topics/390194015