hiberante many-to-one fetch属性
fetch属性有两个取值 join和select,默认select,区别看后面结果就清楚了
Card类
Card类映射
Student类
Student类映射
一个学生拥有水卡和银行卡
对应的表结构

执行下面代码
fetch属性有两个取值 join和select,默认select,区别看后面结果就清楚了
Card类
pulic class Card{
private Integer id;
private String name;
private Student student;
//省略getset方法
}
Card类映射
<hibernate-mapping>
<class name="com.main.Card" table="CARD">
<id name="id" type="java.lang.Integer">
<column name="ID" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
<many-to-one name="student" class="com.main.Student" fetch="join" lazy="false">
<column name="STUDENT_ID" />
</many-to-one>
</class>
</hibernate-mapping>
Student类
public class Student {
private Integer id;
private String name;
private Set cardSet = new HashSet();
}
Student类映射
<hibernate-mapping>
<class name="com.main.Student" table="STUDENT">
<id name="id" type="java.lang.Integer">
<column name="ID" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
<set name="cardSet" inverse="true" lazy="true" >
<key column="STUDENT_ID" ></key>
<one-to-many class="com.main.Card"/>
</set>
</class>
</hibernate-mapping>
一个学生拥有水卡和银行卡
对应的表结构
Card表
Student表
执行下面代码
Card card = session.get(Card.class, 342);
设置join时的sql语句
设置select时sql语句
发现select时发送了两条语句,先查找了Card的其他部分,
然后根据Card表关联的外键列值到Student表里面去查找对应的Student的信息