开发者

Getting related object's ID without fetching it from the database (Play framework)

Say I have these two models:

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

public class Country extends Model
{
}

I have a City object and want to know the related Country's ID. I could fetch from the database by doing city.getCountry().getId() but that seems 开发者_StackOverflowvery wasteful. How can I just get the ID (stored in the database table as country_id)?


I think fetchType=LAZY is what you need. It creates a proxy-object for the country and it should not do any queries by requesting the id.

@OneToOne(fetch = FetchType.LAZY)
private Country country;

But you also need do mark your id-getter in Country.

public class Country extends Model
{
    @Id
    public Long getId()
    {
        return id;
    }
}

If you don't want do change your id-annotations you can also use this workaround:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜