
在course那个注解下面写上@JoinTable(name = "......", catalog = "........", joinColumns = { @JoinColumn(name = "......", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = ".......", nullable = false, updatable = false) })这样才能够生成关联表啊!建议楼主好好看看hibernate annotation的使用。
您可以aStudent.getTeachers().add(aTeacher)
这样一个学生关联老师的数量是少的。在学生这一侧做 *** 作比在老师一侧做 *** 作关联的数据量少。提高效率。
否则,就需要使用本地SQL的方式进行 *** 作了。但是这样就又失去了使用Hibernate的意义了。使用Hibernate的一般原则是尽量通过Hibernate提供的API来完成数据库 *** 作,这样会简化代码编写,提高开发效率。但是有的时候考虑程序运行效率和需求,需要使用本地SQL的方式来 *** 作数据库,目的是提高效率。在这样的矛盾中,根据需求进行取舍吧。
我不太明白你的意思,你是不会写多对多,还是想问什么啊?hibernate用annotation多对多这样写比如:在User类中有个与Role多对多的关联类
private List<Role>roleList
//多对多定义
@ManyToMany
//中间表定义,表名采用默认命名规则
@JoinTable(name = "ACCT_USER_ROLE", joinColumns = { @JoinColumn(name = "USER_ID") }, inverseJoinColumns = { @JoinColumn(name = "ROLE_ID") })
//Fecth策略定义
@Fetch(FetchMode.SUBSELECT)
//集合按id排序.
@OrderBy("id")
//集合中对象id的缓存.
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public List<Role>getRoleList() {
return roleList
}
public void setRoleList(List<Role>roleList) {
this.roleList = roleList
}
你建立了User与Role的pojo后这样写会自动生成ACCT_USER_ROLE这张表,里面的字段分别是USER_ID、ROLE_ID
如果使用配置文件的方法也是一样的。你去google一下hibernate多对多很多的例子。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)