您的位置:首页 > 其它

Hibernate关联关系映射-----基于连接表的单向一对多映射

2011-07-23 10:17 387 查看
实体:

package uni.many2one.jointable;

public class Parent {
private int id;
private String name;
private Child child;

public Parent() {
}

public Parent(int id, String name, Child child) {
super();
this.id = id;
this.name = name;
this.child = child;
}

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 Child getChild() {
return child;
}

public void setChild(Child child) {
this.child = child;
}

}

package uni.many2one.jointable;

public class Child {
private int id;
private String name;

public Child(int id, String name) {
super();
this.id = id;
this.name = name;
}

public Child() {
}

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;
}
}


  

hm配置文件:

<hibernate-mapping>
<!-- <class name="org.hibernate.wk.Student" dynamic-insert="true" dynamic-update="true"> -->
<class name="uni.many2one.jointable.Parent">
<id name="id" column="did">
<generator class="native" />
</id>
<property name="name" type="string" column="name"></property>

<join table="parentchild">
<key column="did"></key>
<many-to-one name="child" column="cid" not-null="true"></many-to-one>
</join>
</class>

</hibernate-mapping>
<hibernate-mapping>
<class name="uni.many2one.jointable.Child">
<id name="id" column="id">
<generator class="native" />
</id>
<property name="name" type="string" column="name"></property>
</class>

</hibernate-mapping>


  

测试文件:

public class Test {

@org.junit.Test
public void testAdd() {
SessionFactory sf = HibernateUtil.getSessionFactory();
Session session = sf.getCurrentSession();
session.beginTransaction();
Child c1 = new Child();
c1.setName("child1");

Parent mother = new Parent();
mother.setName("Mother");
mother.setChild(c1);

Parent father = new Parent();
father.setName("Daddy");
father.setChild(c1);

session.save(c1);
session.save(mother);
session.save(father);
session.beginTransaction().commit();

}

}


  

测测试结果:

Hibernate: insert into Child (name) values (?)
Hibernate: insert into Parent (name) values (?)
Hibernate: insert into parentchild (cid, did) values (?, ?)
Hibernate: insert into Parent (name) values (?)
Hibernate: insert into parentchild (cid, did) values (?, ?)


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: