hibernate many-to-many如何实现增删操作
本帖最后由 a11sos 于 2013-07-17 12:02:02 编辑 用户表 有ID NAME AGE
图书表 有ID NAME AUTHOR
中间表 ID USERID BOOKID
项目中不可以出现 中间表实体 也就是不能拆成一对多。。。。
GET这个集合可以获得查询 求解如何增删操作
public class User implements Serializable {
private int id;
private String name;
private int age;
private Set<Book> book;
public Set<Book> getBook() {
return book;
}
public void setBook(Set<Book> book) {
this.book = book;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}<?xml version="1.0"?>
<!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.example.pojo.User" table="user">
<id name="id">
<column name="id" />
<generator class="identity"/>
</id>
<property name="name"/>
<property name="age"/>
<set name="book" table="userbook" lazy="false">
<key column="userid"/>
<many-to-many class="com.example.pojo.Book" column="bookid" />
</set>
</class>
</hibernate-mapping>
BOOK 和 USER配置差不多
[解决办法]
set cashcade配置了就可以的
[解决办法]
例子:
A.java实体代码
package com.aaron.prj.inventory.vo;
import java.util.Set;
public class A {
private int id;
private String name;
private Set b;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set getB() {
return b;
}
public void setB(Set b) {
this.b = b;
}
}
A.hbm.xml中详细配置信息:
<?xml version="1.0" encoding="gb2312"?>
<!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.aaron.prj.inventory.vo.A" table="inv_a">
<id name="id" column="aId">
<generator class="native" />
</id>
<property name="name" column="aName" />
<set name="b" table="inv_a_b" cascade="save-update" inverse="false">
<key column="a_id" not-null="true" />
<many-to-many column="b_id" class="com.aaron.prj.inventory.vo.B" />
</set>
</class>
</hibernate-mapping>
在hbm配置many-to-many按照如下方式即可:
<set name="b" table="inv_a_b" cascade="save-update" inverse="false">
<key column="a_id" not-null="true" />
<many-to-many column="b_id" class="com.aaron.prj.inventory.vo.B" />
</set>