2
回答
求Java大神,关于SSH整合多对多关联的一些问题~
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

现在遇到一些问题,我现在有两张表user和pbar,他们的主键分别为uid和pid,现在我将他们建立多对多关联,生成一张中间表user_pbar,里面包括中间表本身的主键upid和user表的uid还有pbar表的pid,现在要往中间表user_pbar里面插入数据,比如说现在我有uid和pid,那么该如何插入到user_pbar里面?Dao方法如何写?

ps:请问中间表还需要配置hbm文件吗?还用写set和get方法吗?

(问题可能问的不是太有技术含量,可是我毕竟是个菜鸟,刚刚接触多对多关联,所以有不懂的地方,希望得到各位大神的帮助,谢谢~)

举报
共有2个答案 最后回答: 3年前
java有点忘了,就记得这么多,不一定对,你可以做参考去试验一下。我记得 user 和pbar 应该各自是一个类, 然后他们的类中会有自己的主键属性和外键属性,如果是多对多的话,外键属性应该是个集合。然后框架搭建好,运行了项目之后,就会自动在数据库中建立  user 表,pbar 表,和中间表。中间表中的数据是根据 user 或者pbar 对象的数据自动更新的(需要配置级联)。 比如你建立一个user对象 ,主键是 1,对应的外键属性是 [1,2,3], 那么中间表里会自动插入三条数据:[1,1] [1,2] [1,3]。当你更改这个对象的属性,比如外键属性改成 [1,4,3]了,那么中间表里 [1,2]这一条数据就会自动更新成[1,4]。删除的时候有点复杂,就是如果这个对象是被引用的,那么删除的时候会报错。比如user1 对应外键是 [1,2,3],那这个2肯定是另一个对象,比如pbar2, 那么你删除pbar2这个对象之前,要先解除user1 对pabr2的引用。如果pbar2还被其他user 引用,也都要解除,才能删除掉pbar2这个对象。  

XML的配置忘记了,用的都是注解。首先你要确定是哪一端维护关系,比如是User中的pbars,pbars属性注解可能如下:

@ManyToMany  
@JoinTable(name = "user_pbar", joinColumns = { @JoinColumn(name = "uid") }, inverseJoinColumns = { @JoinColumn(name = "pid") })

Pbar中的users属性注解如下:

@ManyToMany(mappedBy = "pbars")
当然需求复杂时,建议单独为中间表配置hbm文件来维护

希望能给你带来思路

顶部