Como me resultó un poco tedioso, les mando un paso a paso de lo que hice:
1. Crear la llamada a la función; en este caso, una NamedNativeQuery:
@Entity
@NamedNativeQueries(value={@NamedNativeQuery( callable=true
,name="USER_PKG.fetchUsers"
,query="{ ? = call USER_PKG.fetchUsers(:code, :userName) }"
,resultClass=User.class
)}
)
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
private Long code;
@Column(name="nombre_usuario")
private String userName;
//Continúa el código
...
}
2. En el DAO (o lo que sea que tengan para acceder a la BD) hice lo siguiente:
...
@SuppressWarnings("unchecked")
public
return (List
public Object doInHibernate(final Session session) throws HibernateException, SQLException {
Query query = session.getNamedQuery("USER_PKG.fetchUsers");
query.setParameter("code", code)
.setParameter("userName", userName);
return query.list();
}
});
}
...
3. Finalmente, un caso de prueba para cerrar el ciclo:
...
public void testFetchUsers() {
Long code = new Long(10);
List
for (User user : queryResult) {
assertEquals(code,user.getCode());
}
}
...
Espero que sirva de algo. Yo estuve un rato largo para hacerlo andar =P.
No hay comentarios.:
Publicar un comentario