hibernate多对一(一对多)单向(双向)关系映射

1.hibernate多对一单向关系映射(外键永远会加在多的一方)

package yingjun.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Person {
	private int id;
	private String name;
	private int age;
	
	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}
	public void setId(int 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;
	}
	
}

 

package yingjun.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Entity
public class Dream {
	private int dreamid;
	private String dream;
	private Person person;
	
	@Id
	@GeneratedValue
	public int getDreamid() {
		return dreamid;
	}
	public void setDreamid(int dreamid) {
		this.dreamid = dreamid;
	}
	public String getDream() {
		return dream;
	}
	public void setDream(String dream) {
		this.dream = dream;
	}
	public void setPerson(Person person) {
		this.person = person;
	}
	@ManyToOne  //建立多对一联系
	@JoinColumn(name="personid")
	public Person getPerson() {
		return person;
	}
}

 

    create table Dream (
        dreamid integer not null auto_increment,
        dream varchar(255),
        personid integer,
        primary key (dreamid)
    )

    create table Person (
        id integer not null auto_increment,
        age integer not null,
        name varchar(255),
        primary key (id)
    )

    alter table Dream 
        add index FK3F397E3E07A4B5E (personid), 
        add constraint FK3F397E3E07A4B5E 
        foreign key (personid) 
        references Person (id)

 

2.hibernate一对多单向关系映射(外键永远会加在多的一方)

package yingjun.model;

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

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;

@Entity
public class Person {
	private int id;
	private String name;
	private int age;
	private Set<Dream> dream=new HashSet<Dream>();
	
	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}
	public void setId(int 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;
	}
	@OneToMany
	@JoinColumn(name="personid")//要加这个字段  不然会用多对多的方式生产3张表
	public Set<Dream> getDream() {
		return dream;
	}
	
	public void setDream(Set<Dream> dream) {
		this.dream = dream;
	}

	
}

 

package yingjun.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Entity
public class Dream {
	private int dreamid;
	private String dream;
	
	
	@Id
	@GeneratedValue
	public int getDreamid() {
		return dreamid;
	}
	public void setDreamid(int dreamid) {
		this.dreamid = dreamid;
	}
	public String getDream() {
		return dream;
	}
	public void setDream(String dream) {
		this.dream = dream;
	}

}

 

create table Dream (
        dreamid integer not null auto_increment,
        dream varchar(255),
        personid integer,
        primary key (dreamid)
    )

    create table Person (
        id integer not null auto_increment,
        age integer not null,
        name varchar(255),
        primary key (id)
    )

    alter table Dream 
        add index FK3F397E3E07A4B5E (personid), 
        add constraint FK3F397E3E07A4B5E 
        foreign key (personid) 
        references Person (id)

 

3.hibernate多对一(一对多)双向关系映射

package yingjun.model;

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

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.MappedSuperclass;
import javax.persistence.OneToMany;

@Entity
public class Person {
	private int id;
	private String name;
	private int age;
	private Set<Dream> dream=new HashSet<Dream>();
	
	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}
	public void setId(int 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;
	}
	@OneToMany(mappedBy="person") //mappedBy要加在One这方
	public Set<Dream> getDream() {
		return dream;
	}
	
	public void setDream(Set<Dream> dream) {
		this.dream = dream;
	}

	
}

 

package yingjun.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Entity
public class Dream {
	private int dreamid;
	private String dream;
	private Person person;
	
	@Id
	@GeneratedValue
	public int getDreamid() {
		return dreamid;
	}
	public void setDreamid(int dreamid) {
		this.dreamid = dreamid;
	}
	public String getDream() {
		return dream;
	}
	public void setDream(String dream) {
		this.dream = dream;
	}
	@ManyToOne
	public Person getPerson() {
			return person;
		
	}
	public void setPerson(Person person) {
		this.person = person;
	}

}

 

create table Dream (
        dreamid integer not null auto_increment,
        dream varchar(255),
        person_id integer,
        primary key (dreamid)
    )

    create table Person (
        id integer not null auto_increment,
        age integer not null,
        name varchar(255),
        primary key (id)
    )

    alter table Dream 
        add index FK3F397E3F8EABE73 (person_id), 
        add constraint FK3F397E3F8EABE73 
        foreign key (person_id) 
        references Person (id)

 

 

你可能感兴趣的:(Hibernate,一对多,多对一,双向关联)