Recupero ID di oggetto correlato senza caricare dal database (quadro Play)
-
30-09-2019 - |
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
)?
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