说我有这两个模型:
public class City extends Model
{
@ManyToOne
private Country country;
}
public class Country extends Model
{
}
我有一个City对象,想知道相关国家/地区的ID。我可以通过city.getCountry().getId()
从数据库中获取,但这看起来非常浪费。我怎样才能获得ID(作为country_id
存储在数据库表中)?
答案 0 :(得分:2)
我认为fetchType = LAZY就是你所需要的。它为国家创建了一个代理对象,它不应该通过请求id来进行任何查询。
@OneToOne(fetch = FetchType.LAZY)
private Country country;
但你还需要在国家标记你的id-getter。
public class Country extends Model
{
@Id
public Long getId()
{
return id;
}
}
如果您不想更改您的id-annotations,您也可以使用此解决方法:
Serializable id = ((HibernateProxy) country).getHibernateLazyInitializer().getIdentifier()