Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JPA存储库之外定义存储过程_Java_Spring Boot_Jpa_Spring Data Jpa_Repository - Fatal编程技术网

Java 如何在JPA存储库之外定义存储过程

Java 如何在JPA存储库之外定义存储过程,java,spring-boot,jpa,spring-data-jpa,repository,Java,Spring Boot,Jpa,Spring Data Jpa,Repository,我有一些从多个实体中选择数据的存储过程,所以我应该在哪里定义它们,因为它们不能从单个存储库获取数据? 我已经定义了特定的存储过程,这些存储过程严格地从实体类中的单个表中获取数据 @Entity @Table(name = "accounts", schema = "ma_db") @NamedStoredProcedureQueries({ @NamedStoredProcedureQuery(name="getAccountsList", proced

我有一些从多个实体中选择数据的存储过程,所以我应该在哪里定义它们,因为它们不能从单个存储库获取数据? 我已经定义了特定的存储过程,这些存储过程严格地从实体类中的单个表中获取数据

   @Entity
   @Table(name = "accounts", schema = "ma_db")
   @NamedStoredProcedureQueries({
            @NamedStoredProcedureQuery(name="getAccountsList", procedureName = "GET_ACCOUNT", parameters = {
                    @StoredProcedureParameter(mode = ParameterMode.IN, name = "UserId", type = String.class)
            } )

如果没有有关您的应用程序和SP的更多信息,就很难判断。 但以下是一些指导原则:

思考SP正在做什么。它关注的主要领域概念是什么

这不一定是一个实体,也许您的java代码中不需要这样的实体,也许您需要它,但尚未实现它

我看到这种情况的一个典型例子是报告或导出。这些也是域对象,尽管它们通常与JPA实体不匹配


如果确实没有匹配的实体与SP关联,那么正确的做法可能是创建一个简单的类,使用
JdbcTemplate

执行SP感谢您的回答Jens,是的,此SP获取的数据用于报告,正如您所说,我刚刚创建了一个简单的类,它使用JDBCTemplate,并且工作得非常好。谢谢