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