1

假设我有这两个模型:

public class City extends Model
{
    @ManyToOne
    private Country country;
}

public class Country extends Model
{
}

我有一个 City 对象,想知道相关国家的 ID。我可以通过这样做从数据库中获取,city.getCountry().getId()但这似乎非常浪费。我怎样才能得到 ID(存储在数据库表中country_id)?

4

1 回答 1

2

我认为 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()
于 2010-09-04T13:06:31.277 回答