Domanda

Di 'Ho questi due modelli:

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

public class Country extends Model
{
}

Ho un oggetto City e desidero essere ID del relativo Paese. Potrei prendere dal database facendo city.getCountry().getId() ma che sembra molto dispendioso. Come posso solo ottenere l'ID (memorizzato nella tabella del database come country_id)?

È stato utile?

Soluzione

Credo fetchType = LAZY è quello che serve. Si crea un proxy-oggetto per il paese e non dovrebbe fare qualsiasi domanda richiedendo l'id.

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

ma è anche necessario fare segnare il tuo ID-getter nel Paese.

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

Se non si desidera fare modificare l'ID-annotazioni è anche possibile utilizzare questa soluzione:

  Serializable id = ((HibernateProxy) country).getHibernateLazyInitializer().getIdentifier()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top