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
sch1
database 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_PACKAGE
schema door dit toe te voegen\\;CREATE SCHEMA IF NOT EXISTS STUDENT_PACKAGE
aan 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_A
opgeslagen 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(); } $$;