• hibernate之关于一对多单向关联映射



    【hibernate】之关于一对多单向关联映射


    基于外键的一对多关联映射!

    一对多,Group(组)对于Person(人),一个组能够有多个人!ok?

    Hibernate主要有两种配置方法。一种是Annotations 一种是XML


    以下是Annotations的配置方法!

    @Entity
    @Table(name="t_group")
    publicclass Group {
        private Integer id;
        private String name;
        private Set<Person> persons=newHashSet<Person>();//set不同意反复,最适合数据库模型
        @Id
        @GeneratedValue
        public Integer getId() {
           returnid;
        }
        publicvoid setId(Integerid) {
           this.id = id;
        }
        @Column(name="t_name")
        public String getName() {
           returnname;
        }
        publicvoid setName(Stringname) {
           this.name = name;
        }
        @OneToMany
         //加上@JoinColumn是为了防止Hibernate将一对多当做多对多来处理,产生中间表
        @JoinColumn(name="group_id")
        public Set<Person>getPersons() {
           returnpersons;
        }
        publicvoidsetPersons(Set<Person> persons){
           this.persons = persons;
        }
    }

    @Entity
    @Table(name="t_person")
    publicclass Person {
        private Integer id;
        private String name;
        private Integer age;
        @Id
        @GeneratedValue
        public Integer getId() {
           returnid;
        }
        publicvoid setId(Integerid) {
           this.id = id;
        }
        @Column(name="t_name")
        public String getName() {
           returnname;
        }
        publicvoid setName(Stringname) {
           this.name = name;
        }
        @Column(name="t_age")
        public Integer getAge() {
           returnage;
        }
        publicvoid setAge(Integerage) {
           this.age = age;
        }
    }

    XML配置一对多的单向关联映射
    publicclass Person {
        private Integer id;
        private String name;
        private Integer age;
        public Integer getId() {
           returnid;
        }
        publicvoid setId(Integerid) {
           this.id = id;
        }
        public String getName() {
           returnname;
        }
        publicvoid setName(Stringname) {
           this.name = name;
        }
        public Integer getAge() {
           returnage;
        }
        publicvoid setAge(Integerage) {
           this.age = age;
        }
    }

    publicclass Group {
        private Integer id;
        private String name;
        private Set<Person> persons=newHashSet<Person>();//set不同意反复,最适合数据库模型
        public Integer getId() {
           returnid;
        }
        publicvoid setId(Integerid) {
           this.id = id;
        }
        public String getName() {
           returnname;
        }
        publicvoid setName(Stringname) {
           this.name = name;
        }
        public Set<Person>getPersons() {
           returnpersons;
        }
        publicvoidsetPersons(Set<Person> persons) {
           this.persons = persons;
        }
    }

    <?

    xml version="1.0"?

    > <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="csg.hibernate.entity"> <class name="Group"table="t_group"> <id name="id"> <column name="id"/> <generator class="native" /> </id> <property name="name" /> <set name="persons"> <key column="group_id"/> <one-to-many class="csg.hibernate.entity.Person"/> </set> </class> </hibernate-mapping>


    <?

    xml version="1.0"?

    > <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="csg.hibernate.entity"> <class name="Person"table="t_person"> <id name="id"> <column name="id"/> <generator class="native" /> </id> <property name="name" /> <property name="age" /> </class> </hibernate-mapping>



    Ok,一对多单向关联映射的Annotations和XML配置方法!



  • 相关阅读:
    C#/Net代码精简优化技巧(二)【转】
    IsSpecialName特性及其他问题【转】
    &、|与&&、||的比较
    序列化后存储Cookie
    序列化反序列化操作
    C#/Net代码精简优化技巧(一)【转】
    .Net 中的序列化与反序列化【转】
    c#对象序列化(二进制序列化)BinaryFormatter【转】
    POJ 2828 Buy Tickets(单点更新) 详细题解和思路
    Color the ball HDU 1556 (非线段树做法)
  • 原文地址:https://www.cnblogs.com/llguanli/p/8943380.html
Copyright © 2020-2023  润新知