Hiberante多对多如何只在中间表插入数据!

会飞的鱼1216 2018-01-10 06:03:41

public class ModelMannger {
private Integer modelId;
private String modelNo;
private String modelName;
private String modelUrl;
private String remark;
private Set<ButtonMannger> buttonManngers = new HashSet<ButtonMannger>();
省略getset方法...
}

public class ButtonMannger {
private Integer butId; //按钮ID
private String butNo; //按钮编号
private String butName; //按钮名称
private String butStyle; //按钮样式
private String butOnclick; //按钮事件
private String remark;
private Set<ModelMannger> modelManngers = new HashSet<ModelMannger>();
省略getset方法...
}


---------------------------------以下为hibernate配置文件-----------------------------------------


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.model.ModelMannger" table="TB_model_mannger">
<id name="modelId" type="integer" >
<generator class="native"/>
</id>
<property name="modelNo" length="100" />
<property name="modelName" length="100" />
<property name="modelUrl" length="100" />
<property name="remark" length="200" />
<!--
主方去维护从方关联关系
-->
<set name="buttonManngers" table="Tb_models_buttons" inverse="false" lazy="false" >
<key column="modelId"></key>
<many-to-many class="com.model.ButtonMannger" column="butId" ></many-to-many>
</set>
</class>
</hibernate-mapping>

-------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.model.ButtonMannger" table="TB_button_mannger">
<id name="butId" type="integer" >
<generator class="native"/>
</id>
<property name="butNo" length="100" />
<property name="butName" length="100" />
<property name="butStyle" length="200" />
<property name="butOnclick" length="200" />
<property name="remark" length="200" />

<set name="modelManngers" table="Tb_models_buttons" inverse="true" lazy="false" >
<key column="butId"></key>
<many-to-many class="com.model.ModelMannger" column="modelId"></many-to-many>
</set>
</class>
</hibernate-mapping>


提问:假如TB_model_mannger主方表中已有数据 TB_button_mannger从方表中已有数据
modelId modelNo modelName butId butNo butName
1 001 模块A 1 001 按钮A
2 002 模块B 2 002 按钮B

现在我只想单单往关联表Tb_models_buttons中插入关联数据如下:
modelId butId
1 1
1 2

我现在这样写的话 每次会在TB_model_mannger中生成一条新的数据

@Test //添加主控方数据(对象)
public void saveModel(){
ModelMannger modelMannger = modelService.findById(1);
ButtonMannger buttonMannger1 = buttService.findById(1);
ButtonMannger buttonMannger2 = buttService.findById(2);
/*Set<ButtonMannger> buttonManngers = new HashSet<ButtonMannger>();
buttonManngers.add(buttonMannger1);
buttonManngers.add(buttonMannger2);
modelMannger.setButtonManngers(buttonManngers);*/
//关联起来
modelMannger.getButtonManngers().add(buttonMannger1);
modelMannger.getButtonManngers().add(buttonMannger2);
buttonMannger1.getModelManngers().add(modelMannger);
buttonMannger2.getModelManngers().add(modelMannger);
modelService.save(modelMannger);
}


请问该如何在只往中间表中插入关联数据?

...全文
244 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
会飞的鱼1216 2018-01-11
  • 打赏
  • 举报
回复
没人回答吗???????????????????????
会飞的鱼1216 2018-01-10
  • 打赏
  • 举报
回复
引用 1 楼 ZHOU西口的回复:
有外键关联吗?
有啊!不就是中间表的外建modelId和butId吗?
ZHOU西口 2018-01-10
  • 打赏
  • 举报
回复
有外键关联吗?

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧