我有名为学生和学校的表。我的学生表列是(studentName,studentNumber和school_id_fkey)。我的学生实体看起来像;
public Class Student{
String studentName;
String studentNumber;
@JoinColumn(name = "school_id_fkey", referencedColumnName = "id")
School school;
....
}
我想做的是想获得特定学生的学校ID。当我尝试下面的代码时,它获得了学校对象,但我只想获得学校ID。有没有办法做到这一点?
student.getSchool();
答案 0 :(得分:2)
没有完美的方法可以做到这一点,但模式是将列映射两次:一次是对象(就像你的问题中一样),另一次是id值。 id值应该标记为只读,否则hibernate会抛出错误。
这种方法的缺点是,如果你为学生分配一个新学校,那么在你从数据库中读回学生对象之前,id值不会改变。
@JoinColumn(name = "school_id_fkey", referencedColumnName = "id")
School school;
@Colum(name = "school_id_fkey", insertable= false, updatable= false)
long schoolId;
请不要将上面的代码作为一个确切的好例子,因为我没有测试过它,也没有一些代码在我工作的ATM项目中执行此操作。