Hibernate 联合主键的配置方法实例

这篇博客通过实例展示了如何在Hibernate中配置联合主键。首先创建了一个名为`join_pkey`的MySQL数据库表,然后定义了两个Java Bean类`JoinPkey`和`JoinPkeyId`,分别对应表实体和主键。接着,详细介绍了`JoinPkey.hbm.xml`文件中的映射配置,最后在`Test.java`中演示了如何保存带有联合主键的对象到数据库。

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

  1. Hibernate 联合主键的配置方法实例
  2. 建立 join_pkey 表(mysql数据库)
  3. CREATE TABLE `join_pkey` (
  4.   `sid` int(11) NOT NULL default '0',
  5.   `bid` int(11) NOT NULL default '0',
  6.   `name` varchar(20default NULL,
  7.   PRIMARY KEY  (`sid`,`bid`)
  8. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  9. JoinPkey Bean:
  10. public class JoinPkey  implements java.io.Serializable {
  11.     private JoinPkeyId id;
  12.     private String name;
  13.     public JoinPkey() {
  14.     }
  15.   public JoinPkey(JoinPkeyId id) {
  16.         this.id = id;
  17.     }
  18.     public JoinPkey(JoinPkeyId id, String name) {
  19.         this.id = id;
  20.         this.name = name;
  21.     }
  22.   public JoinPkeyId getId() {
  23.         return this.id;
  24.     }
  25.     public void setId(JoinPkeyId id) {
  26.         this.id = id;
  27.     }
  28.   public String getName() {
  29.         return this.name;
  30.     }
  31.     public void setName(String name) {
  32.         this.name = name;
  33.     }
  34. }
  35. JoinPkeyId  Bean:
  36. public class JoinPkeyId  implements java.io.Serializable {
  37.      private Integer sid;
  38.      private Integer bid;
  39.     public JoinPkeyId() {
  40.     }
  41.     public JoinPkeyId(Integer sid, Integer bid) {
  42.         this.sid = sid;
  43.         this.bid = bid;
  44.     }
  45.    public Integer getSid() {
  46.         return this.sid;
  47.     }
  48.     public void setSid(Integer sid) {
  49.         this.sid = sid;
  50.     }
  51.   public Integer getBid() {
  52.         return this.bid;
  53.     }
  54.      public void setBid(Integer bid) {
  55.         this.bid = bid;
  56.     }
  57. }
  58. JoinPkey.hbm.xml:
  59. <hibernate-mapping>
  60.     <class name="com.vo1.JoinPkey" table="join_pkey">
  61.         <composite-id name="id" class="com.vo1.JoinPkeyId">
  62.             <key-property name="sid" type="java.lang.Integer">
  63.                 <column name="sid" />
  64.             </key-property>
  65.             <key-property name="bid" type="java.lang.Integer">
  66.                 <column name="bid" />
  67.             </key-property>
  68.         </composite-id>
  69.         <property name="name" type="java.lang.String">
  70.             <column name="name" length="20" />
  71.         </property>
  72.     </class>
  73. </hibernate-mapping>
  74. Test.java:
  75. public class Test {
  76.     SessionFactory sf;
  77.     Session session;
  78.     private Test()
  79.     {
  80.         try
  81.         {
  82.             Configuration cfg = new Configuration();
  83.             sf = cfg.configure().buildSessionFactory();
  84.             session = sf.openSession();
  85.         }
  86.         catch(HibernateException ex)
  87.         {
  88.             ex.printStackTrace();
  89.         }
  90.         
  91.     }
  92.     public void addMethod(JoinPkey st)
  93.        {
  94.            Transaction t=null;
  95.            t=session.beginTransaction();
  96.            session.save(st);
  97.            t.commit();
  98.            
  99.        }
  100.     
  101.     public static void main(String[] args) {
  102.         JoinPkey jp=new JoinPkey();
  103.         jp.setName("aaa");
  104.         JoinPkeyId jki=new JoinPkeyId();
  105.         jki.setBid(1);
  106.         jki.setSid(1);
  107.         jp.setId(jki);
  108.         new Test().addMethod(jp);
  109.         
  110.     }
  111. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值