Dit is wat ik deed.
Vraag #2: Om deze vraag te beantwoorden, moest ik de native query als volgt wijzigen
@Repository
public interface StudentRepository extends JpaRepository<Student, String> {
@Modifying
@Query(value = "call sch1.STUDENT_PACKAGE.Set_Grades_To_A('A')", nativeQuery = true)
public void setStudentGradeToA();
}
Vraag #1: Om hier antwoord op te geven, zijn drie dingen van belang. Nu ik de native query had gewijzigd zoals hierboven, kreeg ik een andere foutmelding:
Caused by: org.h2.jdbc.JdbcSQLException: Database "sch1" not found; SQL statement:
call sch1.STUDENT_PACKAGE.Set_Grades_To_A('A') [90013-197]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:357)
at org.h2.message.DbException.get(DbException.java:179)
at org.h2.message.DbException.get(DbException.java:155)
Het was op zoek naar een database genaamd sch1 . Het lijkt erop dat het patroon dat wordt gebruikt om een opgeslagen procedure in H2 aan te roepen, database.schema.procedure_name is. . Omdat het me niet kan schelen wat die procedure eigenlijk doet, kon ik dit vervalsen door een database te maken met de naam sch1 een schema genaamd STUDENT_PACKAGE en de procedurenaam Set_Grades_To_A
Om de in het geheugen database aan te maken, moet u de volgende eigenschap spring.datasource.url . instellen in de application.properties bestand.
-
Maak de
sch1database als volgtspring.datasource.url=jdbc:h2:mem:sch1;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=Oracle;INIT=CREATE SCHEMA IF NOT EXISTS first_schema. Merk op dat de databasenaamsch1. is -
Maak het
STUDENT_PACKAGEschema door dit toe te voegen\\;CREATE SCHEMA IF NOT EXISTS STUDENT_PACKAGEaan het einde van despring.datasource.url. Dit voegt een tweede schema toe genaamdSTUDENT_PACKAGE. De eigenschap zou er als volgt uit moeten zienspring.datasource.url=jdbc:h2:mem:sch1;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=Oracle;INIT=CREATE SCHEMA IF NOT EXISTS first_schema\\;CREATE SCHEMA IF NOT EXISTS STUDENT_PACKAGE -
Maak een
Set_Grades_To_Aopgeslagen procedure door dit toe te voegen aan uw schema.sqlCREATE ALIAS STUDENT_PACKAGE.Set_Grades_To_A AS $$ void setGradesToA(String s) { new StringBuilder(s).reverse().toString(); } $$;