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()
精彩评论