如何获得外键价值

时间:2014-01-21 09:19:28

标签: hibernate

我有名为学生和学校的表。我的学生表列是(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();

1 个答案:

答案 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项目中执行此操作。