学生选择课
CREATETABLE stud(
id INT PRIMARY KEY,
NAME VARCHAR(30)
);
CREATETABLE course(
id INT PRIMARY KEY,
NAME VARCHAR(30)
);
CREATETABLE sc(
sid INT,
cid INT,
CONSTRAINT PRIMARY KEY(sid,cid),
CONSTRAINT FOREIGN KEY(sid) REFERENCESstud(id),
CONSTRAINT FOREIGN KEY(cid) REFERENCEScourse(id)
);
package czb.domain;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name= "stud")
@GenericGenerator(name = "inc",strategy = "increment")
public class Stud {
@Id
@Column
@GeneratedValue(generator = "inc")
private Integer id;
@Column
private String name;
@ManyToMany
@Cascade(value = CascadeType.SAVE_UPDATE)
// 指定中间表
@JoinTable(name = "sc", joinColumns = @JoinColumn(name = "sid"),
inverseJoinColumns = @JoinColumn(name = "cid"))
private List
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 List
return courses;
}
public voidsetCourses(List
this.courses = courses;
}
@Override
public String toString() {
return "Stud [id="+ id + ", name="+ name+ ", courses=" + courses
+"]";
}
}
2.2.类Course
@Entity
@Table(name="course")
@GenericGenerator(name="inc",strategy="increment")
public class Course {
@Id
@Column
@GeneratedValue(generator="inc")
private Integer id;
@Column
private String name;
@ManyToMany
//指定中间表
@JoinTable(name="sc",joinColumns=@JoinColumn(name="cid"),
inverseJoinColumns=@JoinColumn(name="sid"))
private List
xml version="1.0"encoding="UTF-8"?>
DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/HibernateConfiguration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory >
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driverproperty>
<property name="hibernate.connection.password">1234property>
<property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/hibernate?characterEncoding=UTF-8property>
<property name="hibernate.connection.username">rootproperty>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialectproperty>
<property name="hibernate.c3p0.max_size">3property>
<property name="hibernate.c3p0.min_size">1property>
<property name="hibernate.c3p0.acquire_increment">2property>
<property name="hibernate.c3p0.timeout">3000property>
<property name="hibernate.c3p0.idle_test_period">2000property>
<property name="hibernate.c3p0.max_statements">50property>
<property name="hibernate.connection.provider_class">org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProviderproperty>
<property name="current_session_context_class">threadproperty>
<property name="show_sql">trueproperty>
<mapping class="czb.domain.Stud"/>
<mapping class="czb.domain.Course"/>
session-factory>
hibernate-configuration>
public classManyToMany {
@Test
publicvoidsave(){
Session s = openSession();
s.beginTransaction();
Stud stud = new Stud();
stud.setName("李四2");
Course course = new Course();
course.setName("英语2");
stud.getCourses().add(course);
s.save(stud);
s.getTransaction().commit();
}
@Test
publicvoidquery(){
Session s = openSession();
Query query = s.createQuery("select new map(s.name as sname ,c.name as cname)from Stud s join s.courses c order by s.name");
List list = query.list();
System.err.println(list);
}
}