据我所知,用mysql
调用JPA
中编写的存储过程是不可能的,但是常见函数(mysql)是什么?
如何使用JPA调用存储的mysql函数?
也许使用EntityManager
方法createNativeQuery
?
(试着举个例子)
答案 0 :(得分:1)
据我所知,用JPA
调用mysql编写的存储过程是不可能的
没有。您可以从JPA调用存储过程。有关如何操作的示例,请参阅here。
如何使用JPA调用存储的mysql函数?
您可以从JPA调用 MySQL存储函数。 JPA 2.1引入了FUNCTION()函数来调用任何预定义的(例如CONCAT,SUBSTRING)或用户定义的函数。
比如说,您已经定义了自己的MySQL函数,例如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$$
然后在JPQL查询中指定您的函数,例如
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();