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;
        }
    }
  • 相关阅读:
    hadoop中namenode发生故障的处理方法
    开启虚拟机所报的错误:VMware Workstation cannot connect to the virtual machine. Make sure you have rights to run the program, access all directories the program uses, and access all directories for temporary fil
    Hbase的安装与部署(集群版)
    分别用反射、编程接口的方式创建DataFrame
    用Mapreduce求共同好友
    SparkSteaming中直连与receiver两种方式的区别
    privot函数使用
    Ajax无刷新显示
    使用ScriptManager服务器控件前后台数据交互
    数据库知识
  • 原文地址:https://www.cnblogs.com/hyl-home/p/7576934.html
Copyright © 2011-2022 走看看