hibernate----1-N--jointable(人与地址)

Posted Stay Hungry, Stay Foolish

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate----1-N--jointable(人与地址)相关的知识,希望对你有一定的参考价值。

package com.ij34.dao;



import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.*;

@Entity
@Table(name="people_inf")
public class People implements java.io.Serializable{
    private static final long serialVersionUID = 1L;
    @Id @Column(name="people_id")
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer id;
    private String name;
    private int age;
    @OneToMany(targetEntity=Address.class) //与另一个相比,没有mappedBy="people"
    @JoinTable(name="people_address"
    ,joinColumns=@JoinColumn(name="peopleId" ,referencedColumnName="people_id")
    ,inverseJoinColumns=@JoinColumn(name="addressId" ,referencedColumnName="address_id" ,unique=true)
    )
    private Set<Address> address=new HashSet<>();
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    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 com.ij34.dao;

import javax.persistence.*;

@Entity
@Table(name="Address_inf")
public class Address{
    @Id @Column(name="address_id")
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int addressId;
    private String message;
    @ManyToOne(targetEntity=People.class)
    
    @JoinTable(name="people_address"
    ,joinColumns=@JoinColumn(name="addressId" ,referencedColumnName="address_id" ,unique=true)
    ,inverseJoinColumns=@JoinColumn(name="peopleId" ,referencedColumnName="people_id" )
    )
    private People people;
    public int getAddressId() {
        return addressId;
    }
    public void setAddressId(int addressId) {
        this.addressId = addressId;
    }
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public People getPeople() {
        return people;
    }
    public void setPeople(People people) {
        this.people = people;
    }
    
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

package com.ij34.web;


    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.service.*;

import com.ij34.dao.Address;
import com.ij34.dao.People;
    public class test01 {
    public static void main(String[] args)throws Exception {
    //实例化Configuration
    Configuration conf=new Configuration().configure();
    ServiceRegistry SR=new StandardServiceRegistryBuilder().applySettings(conf.getProperties()).build();
    // 以Configuration实例创建SessionFactory实例
    SessionFactory SF=conf.buildSessionFactory(SR);
    //create session
    Session session=SF.openSession();
    //start 事务
    Transaction tx=session.beginTransaction();
    People person = new People();
    person.setAge(29);
    // 为复合主键的两个成员设置值
   People people=new People();
   people.setAge(22);
   people.setName("林彪");
   Address a=new Address();
   a.setMessage("广州");
   a.setPeople(people);
   Address a2=new Address();
   a2.setMessage("香港");
   people.getAddress().add(a2);
   session.persist(a);
   session.save(people);
   session.persist(a2);
    tx.commit();
    session.close();
    SF.close();
    }
    }

 

以上是关于hibernate----1-N--jointable(人与地址)的主要内容,如果未能解决你的问题,请参考以下文章