zoukankan      html  css  js  c++  java
  • hibernate学习(设计多对多 关系 映射)

    //
    package org.crazy.app.domain;
    import java.util.HashSet;
    import java.util.Set;
    
    import javax.persistence.*;
    @Entity
    @Table(name="person_inf")
    public class Person {
        @Id
        @Column(name="person_id")
        @GeneratedValue(strategy=GenerationType.IDENTITY)
        private Integer id;
        private String name;
        private int age;
        @ManyToMany(targetEntity=Address.class)
        @JoinTable(name="person_address",
        joinColumns=@JoinColumn(name="person_id",referencedColumnName="person_id"),
        inverseJoinColumns=@JoinColumn(name="address_id",referencedColumnName="address_id"))
        private Set<Address> address=new HashSet<Address>();
        
        public Person() {
        
        }
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
        //
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public Set<Address> getAddress() {
            return address;
        }
        public void setAddress(Set<Address> address) {
            this.address = address;
        }
        
        
        
    }
    //**************************************
    package org.crazy.app.domain;
    
    import java.util.HashSet;
    import java.util.Set;
    
    import javax.persistence.*;
    
    @Entity
    @Table(name="address_inf")
    public class Address {
        @Id
        @Column(name="address_id")
        @GeneratedValue(strategy=GenerationType.IDENTITY)
        private Integer addressId;
        private String addressDetail;
        @ManyToMany(targetEntity=Person.class)
        @JoinTable(name="person_address",
        joinColumns=@JoinColumn(name="address_id",referencedColumnName="address_id"),
        inverseJoinColumns=@JoinColumn(name="person_id",referencedColumnName="person_id"))
        private Set<Person> persons=new HashSet<Person>();
        public String getAddressDetail() {
            return addressDetail;
        }
        public void setAddressDetail(String addressDetail) {
            this.addressDetail = addressDetail;
        }
        public Set<Person> getPersons() {
            return persons;
        }
        public void setPersons(Set<Person> persons) {
            this.persons = persons;
        }
        public Address(String addressDetail) {
            this.addressDetail = addressDetail;
        }
        public Address() {
        
        }
        
        
        
    }

    2,测试

            Person p = new Person();
            // 设置Person的name为crazyit
            p.setName("crazyit");
            p.setAge(20);
            // 持久化Person对象(对应于插入主表记录)
            session.save(p);
            // 创建一个瞬态的Address对象
            Address a = new Address("广州天河");
            // 先设置Person和Address之间的关联关系
            a.getPersons().add(p);
            // 再持久化Address对象
            session.persist(a);
            // 创建一个瞬态的Address对象
            Address a2 = new Address("上海虹口");
            // 先设置Person和Address之间的关联关系
            a2.getPersons().add(p);
            // 再持久化Address对象(对应于插入从表记录)
            session.persist(a2);
    
            Person p2 = new Person();
            p2.setName("fkit");
            p2.setAge(29);
            p2.getAddress().add(a2);
            session.save(p2);

  • 相关阅读:
    Qt之镜像旋转
    Qt之QCheckBox
    Qt之动画框架
    Qt之QFileSystemWatcher
    Qt之qSetMessagePattern
    Qt之qInstallMessageHandler(重定向至文件)
    Qt之qInstallMessageHandler(输出详细日志)
    Qt之窗体透明
    Qt之窗体拖拽、自适应分辨率、自适应大小
    Qt之设置应用程序图标
  • 原文地址:https://www.cnblogs.com/panqingqiang/p/5080385.html
Copyright © 2011-2022 走看看