Hibernate 获取相关对象';s ID,而不从数据库中获取它(Play framework)

Hibernate 获取相关对象';s ID,而不从数据库中获取它(Play framework),hibernate,playframework,Hibernate,Playframework,假设我有两个模型: public class City extends Model { @ManyToOne private Country country; } public class Country extends Model { } 我有一个City对象,想知道相关国家的ID。我可以通过执行City.getCountry().getId()从数据库中获取,但这似乎非常浪费。我如何才能获取ID(作为国家/地区ID存储在数据库表中?我认为fetchType=LAZY是您需

假设我有两个模型:

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

public class Country extends Model
{
}

我有一个City对象,想知道相关国家的ID。我可以通过执行
City.getCountry().getId()
从数据库中获取,但这似乎非常浪费。我如何才能获取ID(作为
国家/地区ID存储在数据库表中?

我认为fetchType=LAZY是您需要的。它为国家/地区创建代理对象,不应通过请求id进行任何查询

@OneToOne(fetch = FetchType.LAZY)
private Country country;
但你们也需要在这个国家标记你们的身份证获取者

public class Country extends Model
{
    @Id
    public Long getId()
    {
        return id;
    }
}
如果不想更改id注释,也可以使用以下解决方法:

  Serializable id = ((HibernateProxy) country).getHibernateLazyInitializer().getIdentifier()