1

私がこれらの2つのモデルを持っているとしましょう:

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;

ただし、国で id-getter をマークする必要もあります。

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

ID アノテーションを変更したくない場合は、次の回避策を使用することもできます。

  Serializable id = ((HibernateProxy) country).getHibernateLazyInitializer().getIdentifier()
于 2010-09-04T13:06:31.277 に答える