在many端的.hbm.xml文件中配置
<!--
映射多对一的关联关系.使用many-to-one来映射多对一的关联关系
name:one端的属性名
class:one端属性对应类名
column:one端在many端对应数据表中外键的名字
-->
<many-to-one name="customer" class="Customer" column="CUSTOMER_ID"></many-to-one>
各种方法:
1.save方法:
public void testMany21Save() {
Customer customer = new Customer();
customer.setCustomerName("AA");
Order order1 = new Order();
order1.setOrderName("ORDER_1");
Order order2 = new Order();
order2.setOrderName("ORDER_2");
//设定关联关系
order1.setCustomer(customer);
order2.setCustomer(customer);
//执行SAVE操作:先插入Customer,再插入Order。3条INSERT语句
//先插入one端(Customer),再插入many端(Order),只有INSERT语句
//先插入Order,再插入Customer,三条INSERT,两条UPDATE
//推荐先插入one端
session.save(customer);
session.save(order1);
session.save(order2);
}
2.get方法
@Test
public void testMany21Get() {
//1.若查询many端的一个对象,则只查询many端的对象,而没有查询对应one端对象
Order order = (Order) session.get(Order.class, 1);
System.out.println(order.getOrderName());
//2.在需要使用关联对象时,才发送对应SQL语句
Customer customer = order.getCustomer();
System.out.println(customer.getCustomerName());
//3.在查询Customer对象时(由many端导航到one端时),若session关闭,会发生懒加载异常
//4.获取Order对象时,默认情况下,其关联的Customer对象是代理对象
}
3.delete方法:在不设定级联关系情况下,且one端和many端存在引用情况下,不能直接删除这一端对象