Meine gespeicherte SQL-Prozedur enthält zwei Abfragen und ich möchte die gespeicherte Prozedur aus meinem Java-Code aufrufen. Ich habe den folgenden Code ausprobiert, aber er gibt nur die Ergebnisliste der ersten Abfrage in der gespeicherten Prozedur zurück.
Query query = em.createNativeQuery("{call VoucherRedemption(?,?,?)}"); query.setParameter(1, loginWorkSpaceId); query.setParameter(2, startDate); query.setParameter(3, endDate); List
Die gespeicherte Prozedur lautet wie folgt:
CREATE PROCEDURE `cer`.`voucherRedemption`(IN workspaceId int(10), IN startDate VARCHAR(30), IN endDate VARCHAR(30)) BEGINNEN Wählen Sie w.ws_name als wsName,str_to_date(startDate, '%Y-%m-%d') als startDate,str_to_date(endDate, '%Y-%m-%d') als endDate aus from workspace w where w.ws_id = workspaceId; Wählen Sie Money.*,Money.paidAmount + Money.PrepaidAmount - Money.ClientCost,Programs.Programs from program; END
我建议像这样使用
EntityManager#createStoredProcedureQuery
:我还没有使用它来获取实际结果,只是执行了一个过程。如果这个方法有效,请告诉我。