日期:2014-05-17  浏览次数:20805 次

hibernate注解配置复合主键,同时主键作为外键
我有一个需求,
学生,课程,选修课三个实体,
选修类中包含学生id,课程id,两者做主键,同时分别与学生表、课程表相关联,
哪位高手能帮忙解决一下如何对3个实体进行注解?非常感激
我想要详细的结果,谢谢!!!

------解决方案--------------------
student类:
import java.util.Set;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.JoinTable;
import javax.persistence.OneToMany;
@Entity
public class Student {

private int id;
private String name;
private Set<Course> courses;
@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;
}
@OneToMany
@JoinTable(name="xuanxiuke",
joinColumns=@JoinColumn(name="Student_id",referencedColumnName="id"),
inverseJoinColumns=@JoinColumn(name="course_id",referencedColumnName="id")
)
public Set<Course> getCourses() {
return courses;
}
public void setCourses(Set<Course> courses) {
this.courses = courses;
}

}


课程类:
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Course {

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;
}


}

选修课类:

package com.zsq.hibernate.model;

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

@Entity
public class xuanxiuke {

private int id;
private String name;
private Student student;
private Course course;
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int&n