zoukankan      html  css  js  c++  java
  • Hibernate映射关系配置(三)

    一对一单向(外键映射):

    Bean:

    public class Card implements Serializable{
    
        private int id ;
        
        private int num ;
        
        private Person person ;
    
            ....
    }
    public class Person implements Serializable {
        
        private int id ;
        
        private String name ;
            ....
    }

    Xml:

    Card.hbm.xml:
    <class name = "Card">
            <!-- id是来配置主键 
                 name是类中的哪个属性和主键映射
                 generator:表示主键的生成策略
            -->
            <id name = "id">
                <generator class="native" />
            </id>
            <!-- property是用来把类中的属性和表的字段做一一对应 -->
            <property name="num" />
            
            <!-- many-to-one 唯一的创建新的字段的标签
                 name是Car中一的一方的属性
                 column 表示name对应到表中的外键是什么名字
            -->
            
            <many-to-one name="person" column="pid" unique="true" cascade="all"/>
            
        </class>
    Person.hbm.xml:
    <class name = "Person">
            <!-- id是来配置主键 
                 name是类中的哪个属性和主键映射
                 generator:表示主键的生成策略
            -->
            <id name = "id">
                <generator class="native" />
            </id>
            <property name="name" />
        </class>

    annotation:

    @Entity
    public class Card implements Serializable{
            @Id @GeneratedValue
        public int getId() {
            return id;
        }
            @ManyToOne
        @JoinColumn(name="pid",unique=true)
        public Person getPerson() {
            return person;
        }
    }
    
    @Entity
    public class Person implements Serializable {
            @Id @GeneratedValue
        public int getId() {
            return id;
        }
    }

    一对一双向(外键映射):

    Xml:

    Card.hbm.xml:
    <class name = "Card">
            <!-- id是来配置主键 
                 name是类中的哪个属性和主键映射
                 generator:表示主键的生成策略
            -->
            <id name = "id">
                <generator class="native" />
            </id>
            <!-- property是用来把类中的属性和表的字段做一一对应 -->
            <property name="num" />
            
            <!-- many-to-one 唯一的创建新的字段的标签
                 name是Car中一的一方的属性
                 column 表示name对应到表中的外键是什么名字
            -->
            
            <many-to-one name="person" column="pid" unique="true" cascade="all" />
            
        </class>
    
    Person.hbm.xml:
    
    <class name = "Person">
            <!-- id是来配置主键 
                 name是类中的哪个属性和主键映射
                 generator:表示主键的生成策略
            -->
            <id name = "id">
                <generator class="native" />
            </id>
            <property name="name" />
            
            <one-to-one name="card" property-ref="person"/>
        </class>

    annotation:

    @Entity
    public class Card implements Serializable{
            @Id @GeneratedValue
        public int getId() {
            return id;
        }
    
            @ManyToOne
        @JoinColumn(name="pid",unique=true)
        public Person getPerson() {
            return person;
        }
    }
    
    @Entity
    public class Person implements Serializable {
            @Id @GeneratedValue
        public int getId() {
            return id;
        }
            
            @OneToOne(mappedBy="person")
        public Card getCard() {
            return card;
        }
    }

    一对一单向(主键映射):

    xml:

    Card.hbm.xml:
    <class name = "Card">
            <!-- id是来配置主键 
                 name是类中的哪个属性和主键映射
                 generator:表示主键的生成策略
            -->
            <id name = "id">
                <generator class="foreign">
                    <param name="property">person</param>
                </generator>
            </id>
            <!-- property是用来把类中的属性和表的字段做一一对应 -->
            <property name="num" />
            
            <!-- many-to-one 唯一的创建新的字段的标签
                 name是Car中一的一方的属性
                 column 表示name对应到表中的外键是什么名字
            -->
            
            <one-to-one name="person" constrained="true" />        
        </class>
    Person.hbm.xml:
    <class name = "Person">
            <!-- id是来配置主键 
                 name是类中的哪个属性和主键映射
                 generator:表示主键的生成策略
            -->
            <id name = "id">
                <generator class="native" />
            </id>
            <property name="name" />
        </class>

    annotation:

    public class Card implements Serializable{
            //主键来自Person的主键
            @OneToOne
        @PrimaryKeyJoinColumn
        public Person getPerson() {
            return person;
        }
    }
    
    @Entity
    public class Person implements Serializable {
            @Id @GeneratedValue
        public int getId() {
            return id;
        }
    }
  • 相关阅读:
    SVN 撤回(回滚)提交的代码
    Android随笔
    Android随笔
    Android随笔
    Android随笔
    阅读笔记
    Android随笔
    Android随笔
    Android随笔
    Android随笔
  • 原文地址:https://www.cnblogs.com/hyl-home/p/7576934.html
Copyright © 2011-2022 走看看