Soweit ich weiß, ist es unmöglich, eine gespeicherte Prozedur in Mysql mit JPA geschrieben nennen
Nein, Sie gespeicherte Prozeduren aufrufen können von JPA. Ein Beispiel dafür, wie es geht, finden Sie unter here.
Wie kann ich eine gespeicherte mysql-Funktion unter Verwendung von JPA aufrufen?
Sie können eine MySQL gespeicherte Funktion von JPA anrufen. JPA 2.1 führt FUNCTION() -Funktion ein, um beliebige vordefinierte (wie CONCAT, SUBSTRING) oder benutzerdefinierte Funktionen aufzurufen.
Nehmen wir zum Beispiel, haben Sie Ihre eigene MySQL-Funktion so definiert, wie shouldGetBonus
CREATE FUNCTION shouldGetBonus (INT department_id, INT project_id)
RETURNS boolean
DETERMINISTIC
BEGIN
DECLARE is_eligible boolean;
SET is_eligible = -- eligible to get bonus
RETURN is_eligible;
END$$
und dann in Ihre JPQL Abfrage geben Sie Ihre Funktion, zum Beispiel
String query = "SELECT DISTINCT e FROM Employee e JOIN e.projects p WHERE FUNCTION('shouldGetBonus', e.department.id, p.id)"
TypedQuery<Employee> emps = entityManager.createQuery(query, Employee.class);
emps.getResultList();
ja. Sie können Prozeduren mit 'JPA' aufrufen ... –
Vielleicht sollten Sie JPA 2.1 lesen. Es gibt viele Dokumente im Internet dafür und wie man eine StoredProcedure ruft –
verweisen diese >> http://www.thoughts-on-java.org/call-stored-procedures-jpa/ –