
我有以下实体映射:
@Entity@table(name = "books")public class Book implements Serializable { @ManyToMany @Jointable(name="books2categorIEs",joinColumns=@JoinColumn(name="book_ID"),inverseJoinColumns=@JoinColumn(name="category_ID")) Collection…
@Entity@table(name = "categorIEs")public class category implements Serializable { @ManyToMany(mappedBy="categorIEs") private Collection看了BookRepository接口:
public interface BookRepository extends JpaRepository如果我在查询本身错了,请修复我.
当我为findByCategorIEs方法运行测试时,我收到错误:
testFindByCategorIEs(com.savdev.springmvcexample.repository.JpaBookRepositoryTest):
org.hibernate.queryParameterException: position beyond number of
declared ordinal parameters. Remember that ordinal parameters are
1-based! position: 1; nested exception is
java.lang.IllegalArgumentException:
org.hibernate.queryParameterException: position beyond number of
declared ordinal parameters. Remember that ordinal parameters are
1-based! position: 1
我有哪个选项可以解决它?
第二,我可以调试将参数传递给查询的Spring Data Jpa逻辑吗?
我得到了Spring Data Jpa返回的代理,无法理解在哪里使用断点来调试这种行为.
更新:
我用(?1)修复了它:
@query("SELECT b FROM Book b INNER JOIN b.categorIEs c WHERE c IN (?1)")代替
@query("SELECT b FROM Book b INNER JOIN b.categorIEs c WHERE c IN (:categorIEs)")最佳答案由于参数名称在字节码中丢失,因此您需要使用@Param注释来指示在JPQL中映射为:category变量的参数.所以,你的代码看起来像:@query("SELECT b FROM Book b INNER JOIN b.categorIEs c WHERE c IN (:categorIEs)")List?1肯定有效,但可能不那么可读. 总结
以上是内存溢出为你收集整理的java – Spring Data Jpa项目使用ManyToMany关系时的生成查询全部内容,希望文章能够帮你解决java – Spring Data Jpa项目使用ManyToMany关系时的生成查询所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)