多对一举例(单项的,从一个方向看)

本文介绍如何使用Hibernate框架配置多方拥有一方的关系映射。通过Java实体类和XML配置文件展示了具体的实现方式,并提供了创建和检索数据的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java 代码
  1. public class User  implements java.io.Serializable {   
  2.   
  3.   
  4.     // Fields       
  5.   
  6.      private long id;   
  7.      private String name;  

多方拥有一方的属性Email将User作为自己的属性.

java 代码
  1. public class Email  implements java.io.Serializable {   
  2.   
  3.   
  4.     // Fields       
  5.   
  6.      private long id;   
  7.      private User user;   
  8.      private String email;  

在配置文件中,一方的没啥变化.

xml 代码
  1. <hibernate-mapping>  
  2.     <class name="org.tie.User" table="user" catalog="tie">  
  3.         <id name="id" type="long">  
  4.             <column name="id" />  
  5.             <generator class="native" />  
  6.         </id>  
  7.         <property name="name" type="string">  
  8.             <column name="name" length="45" not-null="true" />  
  9.         </property>  
  10.     </class>  
  11. </hibernate-mapping>  

在多方需要加入many-to-one

xml 代码
  1. <hibernate-mapping>  
  2.     <class name="org.tie.Email" table="email" catalog="tie">  
  3.         <id name="id" type="long">  
  4.             <column name="id" />  
  5.             <generator class="native" />  
  6.         </id>  
  7.         <many-to-one name="user" class="org.tie.User" fetch="select">  
  8.             <column name="uid" not-null="true" />  
  9.         </many-to-one>  
  10.         <property name="email" type="string">  
  11.             <column name="email" length="45" not-null="true" />  
  12.         </property>  
  13.     </class>  
  14. </hibernate-mapping>  

 

java 代码
  1. public void testCreate(){   
  2.         Email email1 = new Email();   
  3.         email1.setEmail("linweihan@163.com");   
  4.            
  5.         Email email2 = new Email();   
  6.         email2.setEmail("linweiyang@163.com");   
  7.            
  8.         User user = new User();   
  9.         user.setName("lin");   
  10.            
  11.         email1.setUser(user);   
  12.         email2.setUser(user);   
  13.            
  14.         Session session = factory.openSession();   
  15.         Transaction tr = session.beginTransaction();   
  16.         session.save(user);   
  17.         session.save(email1);   
  18.         session.save(email2);   
  19.         tr.commit();   
  20.         session.close();   
  21.     }   
  22.        
  23.        
  24.     public void testRetrieve(){   
  25.         Session session = factory.openSession();   
  26.         Email email = (Email)session.load(Email.classnew Long(1));   
  27.         System.out.println(email.getUser().getName());   
  28.         session.close();   
  29.     }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值