Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/11/2006, 23:28
picaporte
 
Fecha de Ingreso: noviembre-2003
Mensajes: 59
Antigüedad: 20 años, 5 meses
Puntos: 0
problema con @GeneratedValue y llave primaria

en mi servlet llamo al EJB de la clase Ubicacion
.
.
try{
Context jndiContext = getInitialContext();
Object ref = jndiContext.lookup("SE4/UbicacionFacade/remote");
UbicacionFacadeRemote dao = (UbicacionFacadeRemote)ref;
Ubicacion ubicacion = new Ubicacion();

ubicacion.setCiudad("ciudad");
ubicacion.setComuna("comuna");
ubicacion.setDirecion("direccion");
ubicacion.setRegion("region");
ubicacion.setSector("sector");
// ubicacion.setId(); --->se genera automaticamente
dao.create(ubicacion);

}

catch (javax.naming.NamingException ne)
{
ne.printStackTrace();
}
}
.
.

la Clase Ubicacion tiene una llave primaria que se genera automaticamente por medio de
@Id
@GeneratedValue

Ahora mi problema es que necesito saber cual fue la llave primaria que me genero con respecto a esa ubicacion que ingrese.
lo que hice en mi EJB fue hacer una funcion que me devuelviera la ultima ubicacion ingresada, pero no estoy seguro que el metodo funcione correctamente, pues otro usuario puede ingresar otra ubicacion al mismo tiempo y ya no seria la misma ubicacion.

public Ubicacion ultimoID(){
List list = em.createQuery("SELECT c FROM Ubicacion AS c").getResultList();

if (list.size()>0){

Ubicacion obj =(Ubicacion)list.get(list.size()-1);
return obj;
}
return null;
}

¿Estoy bien, como puedo recuperar mi llave primaria al ingresar una ubicacion cualquiera.? ya que no puedo usar ubicacion.getId() porque Hibernate la genera automaticamente.

saludos