获取相关对象的ID而不从数据库中获取它(Play框架)

时间:2010-09-04 11:53:34

标签: hibernate playframework

说我有这两个模型:

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

public class Country extends Model
{
}

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

1 个答案:

答案 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()