User<----------------->Group Many 2 One 关系
User
import java.util.Date;
public class User {
private Long id;
private String name;
private String password;
private Date createTime;
private Date expireTime;
private Group group;
}
Group
public class Group {
private Long id;
private String name;
}
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.bjsxt.hibernate">
<class name="User" table="t_user" >
<id name="id">
<generator class="native" />
</id>
<property name="name" />
<property name="password" />
<property name="createTime" />
<property name="expireTime" />
<many-to-one name="group" column="groupId" />
</class>
</hibernate-mapping>
在many-to-one中可以设置Cascade,但是Cascade只和CUD有关与R无关
Group.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.bjsxt.hibernate">
<class name="Group" table="t_group">
<id name="id">
<generator class="native" />
</id>
<property name="name" />
</class>
</hibernate-mapping>
CREATE TABLE `t_group` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
CREATE TABLE `t_user` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NULL DEFAULT NULL,
`password` VARCHAR(255) NULL DEFAULT NULL,
`createTime` DATETIME NULL DEFAULT NULL,
`expireTime` DATETIME NULL DEFAULT NULL,
`groupId` BIGINT(20) NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `FKCB63CCB6C3D18669` (`groupId`),
CONSTRAINT `FKCB63CCB6C3D18669` FOREIGN KEY (`groupId`) REFERENCES `t_group` (`id`)
)
查询
@Test
public void testLoad(){
Session session = null;
Transaction tx = null;
try{
session = HibernateUtil.openSession();
tx = session.beginTransaction();
Query query = session.createQuery("from User");
query.setFirstResult(0);
query.setMaxResults(3);
List<User> users = (List<User>)query.list(); //发一条sql
for( User user : users){
String name = user.getName();
Group g = user.getGroup(); //发sql,如果在session中存在,则不发sql
String gName = "";
if(g !=null) {
gName = g.getName();
}
System.out.println(name + ","+gName);
}
tx.commit();
} catch (Exception e){
e.printStackTrace();
if(tx != null) tx.rollback();
} finally {
HibernateUtil.close(session);
}
}