几个实体以及其关系
用户,班级,猫,地址:
用户——班级 N-N
用户——猫 1-1
猫——地址 1-N
几个实体:省略get,set
public class User {
private Integer id;
private String name;
private Cat cat;
private Set<Clazz> clazzs;
}
public class Clazz {
private Integer id;
private String className;
private Set<User> users;
}
public class Cat {
private Integer id;
private String name;
private Set<Address> addrs;
private User user;
}
public class Address {
private Integer id;
private String name;
private Cat cat;
}
<hibernate-mapping package="howie.domain">
<class name="User" table="tb_user">
<id name="id" column="user_id">
<generator class="identity"/>
</id>
<property name="name" column="user_name"/>
<many-to-one name="cat" class="Cat" column="cat_id" unique="true"/>
<set name="clazzs" table="tb_clazz_user_join" >
<key column="user_id"/>
<many-to-many class="Clazz" column="clazz_id"/>
</set>
</class>
<class name="Clazz" table="tb_clazz">
<id name="id" column="clazz_id">
<generator class="identity"/>
</id>
<property name="className" column="clazz_name"/>
<set name="users" table="tb_clazz_user_join" >
<key column="clazz_id"/>
<many-to-many class="User" column="user_id"/>
</set>
</class>
<class name="Cat" table="tb_cat">
<id name="id" column="cat_id">
<generator class="identity"/>
</id>
<property name="name" column="cat_name"/>
<one-to-one name="user" class="User" />
<set name="addrs" table="tb_addr" inverse="true" cascade="all" >
<key column="cat_id"></key>
<one-to-many class="Address" />
</set>
</class>
<class name="Address" table="tb_addr">
<id name="id" column="addr_id">
<generator class="identity"/>
</id>
<property name="name" column="addr_name"/>
<many-to-one name="cat" class="Cat" column="cat_id" not-null="true"/>
</class>
</hibernate-mapping>
测试文件
import java.util.HashSet;
import java.util.Set;
import howie.domain.Address;
import howie.domain.Cat;
import howie.domain.Clazz;
import howie.domain.User;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class DemoTest {
public static void main(String[] args) {
Configuration conf=new Configuration().configure();
SessionFactory sf=conf.buildSessionFactory();
Session sess=sf.openSession();
Transaction tx=sess.beginTransaction();
User user=new User();
user.setName("howie");
User user2=new User();
user2.setName("jimmy");
Cat cat1=new Cat();
cat1.setName("咖菲猫");
cat1.setUser(user);
Address addr1=new Address();
addr1.setName("树下");
addr1.setCat(cat1);
Address addr2=new Address();
addr2.setName("树上");
addr2.setCat(cat1);
Address addr3=new Address();
addr3.setName("屋里");
addr3.setCat(cat1);
Address addr4=new Address();
addr4.setName("屋外");
addr4.setCat(cat1);
Clazz clz1=new Clazz();
clz1.setClassName("安卓");
Set<User> users=new HashSet<>();
users.add(user);
users.add(user2);
clz1.setUsers(users);
sess.save(user);
sess.save(user2);
sess.save(clz1);
sess.save(cat1);
sess.save(addr1);
sess.save(addr2);
sess.save(addr3);
sess.save(addr4);
tx.commit();
sess.close();
sf.close();
}
}
经测试,是OK的,哈哈,自己mark一下