Quiero buscar el ID de una relación uno-a-uno sin cargar todo el objeto. Pensé que podía hacer esto utilizando la carga diferida de la siguiente manera:Hibernate uno-a-uno: getId() sin obtener todo el objeto
class Foo {
@OneToOne(fetch = FetchType.LAZY, optional = false)
private Bar bar;
}
Foo f = session.get(Foo.class, fooId); // Hibernate fetches Foo
f.getBar(); // Hibernate fetches full Bar object
f.getBar().getId(); // No further fetch, returns id
Quiero f.getBar() para no gatillo otra exploración. Quiero que hibernate me proporcione un objeto proxy que me permita llamar a .getId() sin buscar realmente el objeto Bar.
¿Qué estoy haciendo mal?
Mismo comportamiento usando @ManyToOne (fetch = FetchType.LAZY, opcionales = false) asociaciones de un solo valor son simplemente no va bien para mí .. – Rob
Es un error de Hibernate: https://hibernate.atlassian.net/browse/HHH-3718 Ver también comparando el acceso de campo o propiedad: http://stackoverflow.com/questions/594597/hibernate-annotations-which-is- mejor acceso de campo o propiedad – GKislin