hibernate多对多,添加不上数据关联

hibernate多对多,添加不上数据关联,第1张

你的注解不对,少了一个关联表的设置当然没有了,

在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多对多很多的例子。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11491962.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存