Можем ли мы вызвать или объединить Select и процедуру в Spring data jpa @Query - PullRequest
2 голосов
/ 14 марта 2019

У меня есть процедура, записанная в базе данных.my_procedure (val1, val2)

Итак, допустим, у меня есть запрос к базе данных, подобный этому:

select field1 as fieldName,  field2 as fieldId
(select * from mydb.my_procedure(id)) as aValue // A procedure call
from mydb.my_table

Я хочу преобразовать это в Spring Data JPA @Query.Примерно так:

@Query (" HERE I WANT THE ABOVE QUERY TO IMPLEMENT")
public List<MyTable> getDetails ()

Разрешено ли нам это делать?

ОБНОВЛЕНИЕ

Например, у меня есть запрос ниже, который я хочу преобразовать.

select id, name, roll,
(select * from db.calculate_fee (date, id)) fee
from Student
where  id = 1 AND roll = 5

Я хочу сделать что-то вроде

@Query("SELECT student, (select * from db.calculate_fee (date, id) fee FROM Student student "
            + "WHERE student.id=:id, "
            + "AND student.name=:roll")
    public List<Student> getDetails(@Param("id") Integer id, @Param("roll") Integer roll);

Есть ли еще способ сделать это?

Ответы [ 2 ]

0 голосов
/ 14 марта 2019
@NamedStoredProcedureQueries({
        @NamedStoredProcedureQuery(name = "getAllEmployees",
                                    procedureName = "get_all_employees",
        resultClasses = Employees.class)
})
@Procedure(name = "getAllEmployees")
List<Employees> getAllEmployees();

Полный учебник

0 голосов
/ 14 марта 2019

Вы пробовали это с собственным запросом?

@Query(nativeQuery = true, value = "select field1 as fieldName, field2 as fieldId...")
List<MyTable> getDetails();

(кстати, public не нужен для 'getDetails', поскольку репозитории являются интерфейсами)

...