SQL(数据库使用的MySQL):CREATE TABLE room ( ROOM_ID int NOT NULL auto_increment, ADDRESS varchar(32) NOT NULL default '', PRIMARY KEY (ROOM_ID)) TYPE=INNODB;CREATE TABLE user ( USER_ID int NOT NULL auto_increment, NAME varchar(16) NOT NULL default '', ROOM_ID int NOT NULL default '', INDEX (ROOM_ID), FOREIGN KEY (ROOM_ID) REFERENCES Room(ROOM_ID), PRIMARY KEY (USER_ID)) TYPE=INNODB;
User.javapackage ivan.hibernate.one2many;public class User { private long id; private String name; private Room room; ...}
User.hbm.xml
Room.javapackage ivan.hibernate.one2many;public class Room { private long id; private String address; private Set users = new HashSet(); ...}
Room.hbm.xml //注意这里需要设定 inverse=true。
Test.javapublic class Test { public static void main(String[] args) throws HibernateException { SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Room room = new Room(); room.setAddress("China-10-911"); User user1 = new User(); user1.setName("ivan"); User user2 = new User(); user2.setName("mada");
user1.setRoom(room); user2.setRoom(room); room.getUsers().add(user1); room.getUsers().add(user2); Session session = sessionFactory.openSession(); Transaction tx= session.beginTransaction(); session.save(room); tx.commit(); session.close();
sessionFactory.close(); }}