当前位置: 首页 > 知识库问答 >
问题:

Java 8 Spring数据JPA参数绑定

昌琪
2023-03-14

在我的@Repository接口中,我使用包含参数(addressType)的JPQL@Query创建了自定义查找方法。

从地址a.addressType=: addressType

在该方法中,我没有在参数上指定@Param(“addressType”)。所以我要

java.lang.IllegalArgumentException:参数绑定的名称不能为空或空!对于命名参数,您需要使用@Param查询Java版本上的方法参数

好的,这很清楚,但是我用的是Java8。那么Java8有什么特别之处呢?

共有3个答案

陆翰学
2023-03-14

JB Nizet和Xtreme Biker的回答都是正确的。我只想补充一点,如果您使用Spring Boot,那么Spring Boot starter父级(Gradle或Maven)已经为您添加了-parameters编译器标志:

plugin {
    delegate.groupId('org.apache.maven.plugins')
    delegate.artifactId('maven-compiler-plugin')
    configuration {
        delegate.parameters('true')
    }
}

阎伟志
2023-03-14

在Java8中,可以使用反射来访问方法的参数名称。这使得@Param注释变得不必要,因为Spring可以从方法参数的名称推断出JPQL参数的名称。

但是您需要在编译器中使用-参数标志才能获得该信息。

看http://docs.oracle.com/javase/tutorial/reflect/member/methodparameterreflection.html.

茹正祥
2023-03-14

@JB Nizet给出的答案是正确的,但我只是想指出在使用Eclipse时为Java 8编译器添加-parameters标志的方法。这在窗户里-

Maven还允许在pom本身中添加标志:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.5.1</version>
    <configuration>
        <compilerArgs>
            <arg>-verbose</arg>
            <arg>-parameters</arg>
        </compilerArgs>
    </configuration>
</plugin>

在使用IDEA IntelliJ时为Java 8编译器添加参数标志

文件

 类似资料:
  • 问题内容: 我有一个功能可以做到这一点: 哪个发送到我的数据库类,它执行以下操作: 问题是这不起作用。 我希望做的是获取列表,并在后面列出它们,以使查询类似于: 但是很明显,我走错了路。 有没有办法使数组…按原样转换为要在查询阶段打印出来的列表? 问题答案: call_user_func_array “使用参数数组调用回调” 应该做的工作 更新 :您还必须更改您的params数组: 如预期的那样,

  • 参数绑定是把当前请求的变量作为操作方法(也包括架构方法)的参数直接传入,参数绑定并不区分请求类型。 参数绑定传入的值会经过全局过滤,如果你有额外的过滤需求可以在操作方法中单独处理。 按名称绑定 参数绑定方式默认是按照变量名进行绑定,例如,我们给Blog控制器定义了两个操作方法read和archive方法,由于read操作需要指定一个id参数,archive方法需要指定年份(year)和月份(mon

  • 我们有Spring Data JPA的功能,我们在其中使用querydsl,如下所示 这是我的实体: 这是我的知识库: 通过上面的代码,我能够实现QueryDSL功能,并根据实体中的任何字段查询实体。 现在,当我们从sql server迁移到Neo4j时,这里是我的实体 这是我的知识库 这些是我的Neo4j应用程序的一些版本和属性 在构建了使用Neo4J的应用程序后,它没有生成QCarEntity

  • 我的要求是对输入文件中给出的数据运行测试。为了实现,我正在使用 请帮助确定我做错了什么。

  • 问题内容: 我的理解是,对于Spring数据JPA,我无法使用查询方法来获取列等于给定非空方法参数的所有行,而当方法参数为null时,无法使用相同的方法来获取此列为NULL的所有行。 。 那是对的吗? 因此,我必须在我的JAVA代码中对此进行区分,并且必须使用单独的查询方法明确要求空值,如下面的示例所示? 不好的是,如果我有4个可以为null的参数,并且必须编写16种不同的查询方法。 问题答案:

  • 问题内容: 我正在尝试绑定准备好的语句参数,该参数是“多维” PostgreSQL数组。这是一个数组示例(列类型为): 如何使用预处理语句绑定类似的值?我试过了: 它没有用: 无法将java.lang.String的实例强制转换为Types.ARRAY 有任何想法吗? 问题答案: 尝试这样的事情(未经测试): 链接: JDBC中的Postgres和多维数组 将数组从Java传递到Postgres