zoukankan      html  css  js  c++  java
  • hibernate 建表一对一 就是一对多,多的一方外键唯一unique

    Person.java

     1 package cn.itcast.hiberate.sh.domain.onetoone;
     2 
     3 import java.io.Serializable;
     4 import java.util.Set;
     5 
     6 public class Person implements Serializable{
     7     private Long cid;
     8     private String cname;
     9     private String description;
    10     
    11     public Long getCid() {
    12         return cid;
    13     }
    14 
    15     public void setCid(Long cid) {
    16         this.cid = cid;
    17     }
    18 
    19     public String getCname() {
    20         return cname;
    21     }
    22 
    23     public void setCname(String cname) {
    24         this.cname = cname;
    25     }
    26 
    27     public String getDescription() {
    28         return description;
    29     }
    30 
    31     public void setDescription(String description) {
    32         this.description = description;
    33     }
    34     
    35     public Address getAddress() {
    36         return address;
    37     }
    38 
    39     public void setAddress(Address address) {
    40         this.address = address;
    41     }
    42 
    43     private Address address;
    44 }

    Person.hbm.xml

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     4 <hibernate-mapping>
     5     <class name="cn.itcast.hiberate.sh.domain.Classes">
     6         <id name="cid" length="5" type="java.lang.Long">
     7             <generator class="increment"></generator>
     8         </id>
     9         <property name="cname" length="20" type="java.lang.String"></property>
    10         
    11         <property name="description" length="100" type="java.lang.String"></property>
    12         <!-- 
    13             set元素对应类中的set集合
    14             通过set元素使classes表与student表建立关联
    15                key是通过外键的形式让两张表建立关联
    16                one-to-many是通过类的形式让两个类建立关联
    17             
    18             cascade 级联
    19                save-update
    20                    1、当 保存班级的时候,对学生进行怎么样的操作
    21                         如果学生对象在数据库中没有对应的值,这个时候会执行save操作
    22                         如果学生对象在数据库中有对应的值,这个时候会执行update操作
    23                delete
    24                all
    25             inverse  维护关系
    26                true      不维护关系     
    27                false     维护关系
    28                default   false
    29          -->
    30         <set name="students" cascade="save-update" inverse="true">
    31             <!-- 
    32                 key是用来描述外键
    33              -->
    34             <key>
    35                 <column name="cid"></column>
    36             </key>
    37             <one-to-many class="cn.itcast.hiberate.sh.domain.Student"/>
    38         </set>
    39     </class>
    40 </hibernate-mapping>

    Address.java

     1 package cn.itcast.hiberate.sh.domain.onetoone;
     2 
     3 import java.io.Serializable;
     4 
     5 public class Address implements Serializable{
     6     private Long sid;
     7     private String sname;
     8     
     9     private Person person;
    10     
    11 
    12     public Person getPerson() {
    13         return person;
    14     }
    15     public void setPerson(Person person) {
    16         this.person = person;
    17     }
    18     public Long getSid() {
    19         return sid;
    20     }
    21     public void setSid(Long sid) {
    22         this.sid = sid;
    23     }
    24     public String getSname() {
    25         return sname;
    26     }
    27     public void setSname(String sname) {
    28         this.sname = sname;
    29     }
    30     public String getDescription() {
    31         return description;
    32     }
    33     public void setDescription(String description) {
    34         this.description = description;
    35     }
    36     private String description;
    37 }

    Address.hbm.xml  外键唯一

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
     4 <hibernate-mapping>
     5     <class name="cn.itcast.hiberate.sh.domain.Student">
     6         <id name="sid" length="5">
     7             <generator class="increment"></generator>
     8         </id>
     9         <property name="sname" length="20"></property>
    10         <property name="description" length="100"></property>
    11         <!-- 
    12             多对一
    13               column 外键
    14          -->
    15         <many-to-one name="classes" class="cn.itcast.hiberate.sh.domain.Classes" column="cid" cascade="save-update" unique="true"></many-to-one>
    16     </class>
    17 </hibernate-mapping>
  • 相关阅读:
    洛谷 P3392 涂国旗
    CODEVS 1066/洛谷 P1514引水入城
    POJ 1286 Necklace of Beads(项链的珠子)
    CODEVS 1138 聪明的质监员
    洛谷 P1241 括号序列
    C++之路进阶——codevs2313(星际竞速)
    C++之路进阶——codevs2366(朋友圈)
    c++之路进阶——hdu3507(Print Article)
    C++之路进阶——codevs2404(糖果)
    C++之路进阶——codevs4655(序列终结者)
  • 原文地址:https://www.cnblogs.com/friends-wf/p/3777298.html
Copyright © 2011-2022 走看看