Many-to-many one-way association

Table Structure

'CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8'

 

'CREATE TABLE `teacher` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8'

 

'CREATE TABLE `t_s` (
  `t_id` int(11) NOT NULL,
  `s_id` int(11) NOT NULL,
  PRIMARY KEY (`t_id`,`s_id`),
  KEY `FK_fnk3mfpvyt0fjhrlfob6aq836` (`s_id`),
  KEY `FK_pwnxtyel9rk4o5hcppee64hv4` (`t_id`),
  CONSTRAINT `FK_fnk3mfpvyt0fjhrlfob6aq836` FOREIGN KEY (`s_id`) REFERENCES `student` (`id`),
  CONSTRAINT `FK_pwnxtyel9rk4o5hcppee64hv4` FOREIGN KEY (`t_id`) REFERENCES `teacher` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8'

 

Annotation method

Student class

package hibernate.entities;

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

@Entity
public class Student {

	private int id;
	private String name;
	
	@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;
	}
	
}

 

Teacher class

package hibernate.entities;

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

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
public class Teacher {

	private int id;
	private String name;
	private Set<Student> students = new HashSet<Student>();
	
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	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;
	}
	
	@ManyToMany
	@JoinTable(
		name="t_s",
		joinColumns=@JoinColumn(name="t_id"),
		inverseJoinColumns=@JoinColumn(name="s_id")
	)
	public Set<Student> getStudents() {
		return students;
	}
	public void setStudents(Set<Student> students) {
		this.students = students;
	}
	
	
}

 

 xml method

Student.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="hibernate.entities">
    <class name="Student">
       <id name="id" column="id">
       	<generator class="native"></generator>
       </id>
       
       <property name="name" column="name"/>
       
    </class>
</hibernate-mapping>

 

Teacher.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="hibernate.entities">
    <class name="Teacher">
       <id name="id" column="id">
       	<generator class="native"></generator>
       </id>
       
       <property name="name" column="name"/>
       
       <set name="students" table="t_s">
       	<key column="t_id"></key>
       	<many-to-many class="hibernate.entities.Student" column="s_id"/>
       </set>
       
    </class>
</hibernate-mapping>

 

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326893841&siteId=291194637