初学hibernate,这个该写什么annotation啊?

我知道这个设计的关系有点乱,但是假如存在的话该怎么映射这个leader属性呢,
非常感谢

public class Tutor {
private Long id;
@OneToMany
private List students;
//这里怎么写注释呢。。。
private Student leader;

public Student getLeader() {
    return Leader;
}

public void setLeader(Student leader) {
    Leader = leader;
}

public Tutor() {
}


public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

public List<Student> getStudents() {
    return students;
}

public void setStudents(List<Student> students) {
    this.students = students;
}

}

@Entity
public class Student {
private Long id;
@ManyToOne
private Tutor tutor;

public Tutor getTutor() {
    return tutor;
}

public void setTutor(Tutor tutor) {
    this.tutor = tutor;
}

public Student() {
}

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

}

那你这里写错了。不可能有这样的关系的

private List students;
//这里怎么写注释呢。。。
private Student leader;

一个导师有很多学生,所以
private List students;是对的。。

一个学生应该只有一个导师吧。。那么你应该在你的Student,定义一个
private Tutor leader;这样,而不是在Tutor 这个实体里定义

这是一对一的关系 这样

@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = " leader_id " )

这个name你可以该成你的表里的列名

映射关系可以有多种,但建议不要那么做,可以为本班学生加上备注表明其leader身份。下面是一对一,一对多的映射关系。
@Entity
public class Tutor {
private Long id;
private List students;
private Student leader;

@OneToOne(cascade=CascadeType.ALL,targetEntity=Student.class)
@JoinColumn(name="leader_id")
public Student getLeader() { 
    return leader; 
} 
public void setLeader(Student leader) { 
    this.leader = leader; 
} 

@GenericGenerator(name="generator", strategy="increment")
@Id
@GeneratedValue(generator ="generator")
@Column(unique = true, nullable = false)
public Long getId() { 
    return id; 
} 
public void setId(Long id) { 
    this.id = id; 
} 
@OneToMany(mappedBy="tutor",cascade=CascadeType.ALL,fetch=FetchType.LAZY)
public List<Student> getStudents() { 
    return this.students; 
} 
public void setStudents(List<Student> students) { 
    this.students = students; 
} 

}

@Entity
public class Student {

private Long id; 
private Tutor tutor; 

@ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@JoinColumn(name="tutor_id")
public Tutor getTutor() { 
    return tutor; 
} 
public void setTutor(Tutor tutor) { 
    this.tutor = tutor; 
} 

@GenericGenerator(name="generator", strategy="increment")
@Id
@GeneratedValue(generator = "generator")
@Column(unique = true, nullable = false)
public Long getId() { 
    return id; 
} 
public void setId(Long id) { 
    this.id = id; 
} 

}