java框架hibernate多对多如何进行关联查询 100

比如我有学生表课程表和中间表三个表对应的实体类(不必要的信息就省略了)publicclassStudent{privateintid;privateStringname;... 比如我有学生表 课程表 和中间表三个表 对应的实体类(不必要的信息就省略了)

public class Student{
private int id;
private String name;

@Id
public int getId(){
}
//其他省略
}
}

public class Course{
private int id;
private String name;
@Id
public int getId(){
}
//其他省略
}

中间表
public class StudentCourse{
private int id;
private Student s;
private Course c;

@Id
public int getId(){
}

@ManyToOne
public Student getS(){
}

@ManyToOne
public Course getC(){
}

}

现在要查询的是student类的id,name以及一个student选了什么course?怎么写hql语句?
返回值尽量是List<Student>
关联的course id和name也要查出来
实体类结构就这样了 没法改了

我写的hql是“select s from Student s join s.scs”
这样写的hql解析的sql放数据库里能查出正确的记录 但是这样的hql却只能得到第一条记录 这是怎么回事?
展开
 我来答
明月清风618
2015-01-30 · TA获得超过737个赞
知道小有建树答主
回答量:395
采纳率:100%
帮助的人:130万
展开全部
多对多需要一个关联表,你用的是注解,你可以在多的一方的另一方引用的list上面,
比如用户和角色,他们是多对多的关系,你可以写上:
/**User表中的其他的属性*/
@LazyCollection(LazyCollectionOption.FALSE)
@ManyToMany()
@JoinTable(name = "TB_USER_ROLE", joinColumns = @JoinColumn(name = "USER_ID"), inverseJoinColumns = @JoinColumn(name = "ROLE_ID"))
private List<Role> roles;

这样就在数据库中创建了TB_USER_ROLE这个关联表,

然后在ROLE这个实体类中也要配置一个多对多的关系。如下:
// 对应关联的用户集合
@ManyToMany(mappedBy = "roles")
private List<User> users;

这样就可以啦,
百度网友b6c1d02
2018-05-07 · TA获得超过966个赞
知道小有建树答主
回答量:321
采纳率:0%
帮助的人:55.6万
展开全部
多对多需要一个关联表,你用的是注解,你可以在多的一方的另一方引用的list上面,
比如用户和角色,他们是多对多的关系,你可以写上:
/**User表中的其他的属性*/
@LazyCollection(LazyCollectionOption.FALSE)
@ManyToMany()
@JoinTable(name = "TB_USER_ROLE", joinColumns = @JoinColumn(name = "USER_ID"), inverseJoinColumns = @JoinColumn(name = "ROLE_ID"))
private List<Role> roles;

这样就在数据库中创建了TB_USER_ROLE这个关联表,

然后在ROLE这个实体类中也要配置一个多对多的关系。如下:
// 对应关联的用户集合
@ManyToMany(mappedBy = "roles")
private List<User> users;

这样就可以啦,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式