1 首先要把mapping标签的resource=换成class=
2注意很多类 都是从javax.persistence中来的 要注意
student.java
@Entity
@Table(name="t_stu")
//@Cache(usage=CacheConcurrencyStrategy.READ_ONLY)//开启二级缓存 缓存对象
//对该对象加锁是为了修改安全 这种经常修改的肯定不能放到二级缓存中
public class Student
{
private int id;
private String name;
private String sex;
private Classroom classroom;
private int version;
@Version//加乐观锁
public int getVersion()
{
return version;
}
public void setVersion(int version)
{
this.version = version;
}
public Student()
{
}
@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 String getSex()
{
return sex;
}
public void setSex(String sex)
{
this.sex = sex;
}
//fetch=FetchType.LAZY就是XML中的select fetch=FetchType.EAGER就是XML中的join
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="cid")
public Classroom getClassroom()
{
return classroom;
}
public void setClassroom(Classroom classroom)
{
this.classroom = classroom;
}
}
Classroom.java
@Entity
@Table(name="t_cla")
@BatchSize(size=2)
public class Classroom
{
private int id;
private String name;
private int grade;
private Set<Student> students;
private Special special;
public Classroom()
{
}
@ManyToOne
@JoinColumn(name="spec_id")
public Special getSpecial()
{
return special;
}
public void setSpecial(Special special)
{
this.special = special;
}
@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 getGrade()
{
return grade;
}
public void setGrade(int grade)
{
this.grade = grade;
}
@OneToMany(mappedBy="classroom")
@LazyCollection(LazyCollectionOption.EXTRA)
@Fetch(FetchMode.SUBSELECT)//此处等于xml中在一端set中配置fetch="sub-select"
public Set<Student> getStudents()
{
return students;
}
public void setStudents(Set<Student> students)
{
this.students = students;
}
}
Specail.java
@Entity
@Table(name="t_spec")
public class Special
{
private int id;
private String name;
private String type;
private Set<Classroom> clas;
public Special()
{
}
@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 String getType()
{
return type;
}
public void setType(String type)
{
this.type = type;
}
@OneToMany(mappedBy="special")
@LazyCollection(LazyCollectionOption.EXTRA)
public Set<Classroom> getClas()
{
return clas;
}
public void setClas(Set<Classroom> clas)
{
this.clas = clas;
}
}