叛逆的小蝌蚪 · C#——SqlParameter的使用方法及 ...· 2 周前 · |
奔跑的风衣 · 《转载》C#如何控制方法的执行时间,超时则强 ...· 2 天前 · |
严肃的黄瓜 · spring ...· 2 天前 · |
英俊的汤圆 · 【记BUG】Aspose.cell ...· 8 小时前 · |
还单身的蘑菇 · python解析并存储sql到数据库 - ...· 2 月前 · |
飘逸的小熊猫 · ckeditor4上传文件 - CSDN文库· 4 月前 · |
憨厚的墨镜 · 运算符重载(1)_returning ...· 9 月前 · |
鼻子大的杨桃 · 闪豆视频下载器下载 闪豆视频下载器 ...· 1 年前 · |
霸气的大葱 · 怎么从本地JavaScript语句中提取数据 ...· 1 年前 · |
所以我使用Gradle,Eclipse,Java 11,Spring和一些Spring数据JPA存储库。在Eclipse中,我测试了在构建路径和执行过程中配置的3个不同的JDK库: OpenJDK、OracleJDK和GraalVM。我每次都会收到相同的错误:
Caused by: java.lang.IllegalArgumentException: Either use @Param on all parameters except Pageable and Sort typed once, or none at all!
,因为有这样的一行:
@Query("select e from Entity e where e.value = :value")
Optional<Entity> findByValue(String value);
保证工作的是为参数添加
@Param("value")
,但我不想这样做,因为这个项目有很多存储库。如果我在命令行
./gradlew bootRun
下运行这个命令行,设置其中一个JDK,则不会发生此错误。
如果我试图在一个新的项目下复制它,但是在Maven下,我为java设置了属性,在maven中设置了maven,那么它在Eclipse下工作得很好。
在IntelliJ理念下,Gradle项目工作得很好。
有人能帮我解释一下为什么会发生这种事吗?Eclipse对Maven来说是个好兆头,但对于Gradle来说不是好兆头吗?我没法解释。
发布于 2022-07-08 12:31:56
这是一个编译器的论点。
似乎在编译代码时,根据项目的不同,它将使用或不带
-parameters
参数运行到
javac
命令。运行
javac --help
时,下面一行解释:
...
-parameters
Generate metadata for reflection on method parameters
...
如果不希望在存储库方法参数中使用
@Param("value")
,则此参数至关重要,因为这有助于Spring数据确定参数的名称并将其分配给
:value
。
在Eclipse2022-06年中,对于特定的项目,转到项目
Properties > Java Compiler
并检查
"Store information about method parameters(usable via reflection)"
,该项目将在存储库方法参数中没有"@Param“注释的情况下工作:
我仍然觉得奇怪的是,为什么在Maven项目上这是激活的,而不是在Gradle项目上。
这些答案帮助了我:
对于IntelliJ的想法,这可能是一个有用的答案:
https://stackoverflow.com/questions/72893952
复制相似问题
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
飘逸的小熊猫 · ckeditor4上传文件 - CSDN文库 4 月前 |