Este es mi problema, tengo que usar un gran SP, y no hay tiempo para reescribir en java. Así que estoy usando los criterios de Hibernate y no sé si puedo llamarlo. Gracias a todos.¿Puedo llamar a un procedimiento almacenado con criterios de hibernación?
Respuesta
Consulte Using stored procedures for querying en la documentación de referencia.
Las consultas mapeadas se llaman así.
List employment = sess.getNamedQuery("BigSP")
.list();
Una consulta mapeada puede devolver entidades.
<sql-query name="BigSP" callable="true">
<return alias="emp" class="Employment">
<return-property name="employee" column="EMPLOYEE"/>
<return-property name="employer" column="EMPLOYER"/>
<return-property name="startDate" column="STARTDATE"/>
<return-property name="endDate" column="ENDDATE"/>
<return-property name="regionCode" column="REGIONCODE"/>
<return-property name="id" column="EID"/>
<return-property name="salary">
<return-column name="VALUE"/>
<return-column name="CURRENCY"/>
</return-property>
</return>
{ call BigSP }
</sql-query>
This document describe cómo asignar el resultado de un procedimiento almacenado, ejecutado como una consulta nativa.
No puede hacerlo con la API de Criteria, pero esto no debería importar.
No, necesita utilizar una consulta nativa. Si está usando anotaciones, vea 2.3.2. Mapping native queries.
A continuación un ejemplo:
@Entity
@NamedNativeQuery(
name="baz",
query="call fooProc(:bar, :i)",
callable=true,
readOnly=true,
resultClass=Foo.class
)
public class Foo {
private Date when;
//...
}
Y llamarlo:
@Stateless
public class FooBean implements FooLocal {
@PersistenceContext EntityManager em;
public Foo getAFoo(string bar, int i) {
Foo result = (Foo)em.createNamedQuery("baz").setParameter("bar", bar).setParameter("i", i).getSingleResult();
return result;
}
}
Gracias Thivent, pero no usamos molestias :( – Gaston
@Gaston Luego consulte la respuesta de Lachlan. –
- 1. ¿Cómo llamar al procedimiento almacenado por hibernación?
- 2. Llamar a un procedimiento almacenado con asp.net
- 3. Cómo llamar a un procedimiento almacenado desde otro procedimiento almacenado?
- 4. Llamar a un procedimiento almacenado python
- 5. Cómo llamar a un procedimiento almacenado (con parámetros) desde otro procedimiento almacenado sin tabla temporal
- 6. Llamar a un procedimiento almacenado con otro en Oracle
- 7. Llamar a un procedimiento almacenado con XML Datatype
- 8. Llamar a un procedimiento almacenado en un procedimiento almacenado en MySQL
- 9. Llamar al procedimiento almacenado con los parámetros
- 10. Llamar a un procedimiento almacenado de Oracle en Squirrel SQL
- 11. ¿Cómo puedo llamar a un procedimiento almacenado de DB2 con parámetros OUT de SQuirreL SQL?
- 12. Cómo llamar a una función escalar en un procedimiento almacenado
- 13. Llamar a un procedimiento almacenado en SQL CTE
- 14. Criterios de hibernación con restricciones en niños
- 15. ¿No puedo llamar a un procedimiento almacenado desde Entity Framework dentro de un ámbito de transacción?
- 16. Llamar a procedimiento almacenado de otro SQL procedimiento almacenado del servidor
- 17. Llamar al procedimiento almacenado con el valor de retorno
- 18. Ejecutar un procedimiento almacenado dentro de un procedimiento almacenado
- 19. ¿Cómo puedo llamar a un procedimiento almacenado de SQL Server desde PowerShell?
- 20. recuento (*) en criterios de hibernación?
- 21. Cómo llamar a la función C# en el procedimiento almacenado
- 22. hibernar y procedimiento almacenado
- 23. Cómo llamar a un procedimiento almacenado mediante un cursor ref en Oracle con la ardilla
- 24. Procedimiento almacenado al ejecutar otro procedimiento almacenado
- 25. Procedimiento almacenado asincrónico Llamadas
- 26. ¿Puedo devolver un varchar (max) de un procedimiento almacenado?
- 27. Llamar a un procedimiento almacenado en Oracle con IN y OUT parámetros
- 28. Llamar procedimiento almacenado dentro de TransactionScope en Entity Framework
- 29. procedimiento almacenado con resultados condicionales
- 30. ¿Puedo tener un parámetro OUTPUT opcional en un procedimiento almacenado?
Hibernate también le permite ejecutar bases de datos llama directa. También podrías hacerlo de esa manera. –
Gracias por su respuesta, pero ¿cómo puedo hacer eso? – Gaston