在我的@Repository接口中,我使用包含参数(addressType)的JPQL@Query创建了自定义查找方法。
从地址a.addressType=: addressType
在该方法中,我没有在参数上指定@Param(“addressType”)。所以我要
java.lang.IllegalArgumentException:参数绑定的名称不能为空或空!对于命名参数,您需要使用@Param查询Java版本上的方法参数
好的,这很清楚,但是我用的是Java8。那么Java8有什么特别之处呢?
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')
}
}
在Java8中,可以使用反射来访问方法的参数名称。这使得@Param
注释变得不必要,因为Spring可以从方法参数的名称推断出JPQL参数的名称。
但是您需要在编译器中使用-参数
标志才能获得该信息。
看http://docs.oracle.com/javase/tutorial/reflect/member/methodparameterreflection.html.
@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