我有以下实体映射:
@Entity
@Table(name = "books")
public class Book implements Serializable {
@ManyToMany
@JoinTable(name="books2categories",
joinColumns=@JoinColumn(name="book_id"),
inverseJoinColumns=@JoinColumn(name="category_id"))
Collection<Category> categories;
...
@Entity
@Table(name = "categories")
public class Category implements Serializable {
@ManyToMany(mappedBy="categories")
private Collection<Book> books;
BookRepository界面如下:
public interface BookRepository extends JpaRepository<Book, Long> {
@Query("SELECT b FROM Book b INNER JOIN b.categories c WHERE c IN (:categories)")
List<Book> findByCategories(Collection<Category> categories);
如果我在查询本身中出错,请修复我。当我为findByCategories方法运行测试时,我得到了错误:
testFindByCategories(com.savdev.springmvcexample.repository.JpaBookRepositoryTest):org。冬眠QueryParameterException:位置超出声明的序数参数的数量。请记住,序数参数是基于1的!位置:1;嵌套的异常是java。lang.IllegalArgumentException:org。冬眠QueryParameterException:位置超出声明的序数参数的数量。请记住,序数参数是基于1的!位置:1
我必须解决它的哪个选项?
第二,我可以调试将参数传递到查询中的Spring数据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)")
您可以直接使用JPA命名约定来解决该问题。
<代码>列表
希望对解决问题有所帮助。
由于参数名在字节码中丢失,因此需要使用@Param注释来指示在JPQL中映射为:category
变量的参数。因此,您的代码如下所示:
@Query("SELECT b FROM Book b INNER JOIN b.categories c WHERE c IN (:categories)")
List<Book> findByCategories(@Param("categories") Collection<Category> categories);
?1
当然有效,但可能不那么可读。
我有一个多项目分级构建,我想应用其中一个子项目作为所有其他子项目的依赖项。 也就是说,如果我指定:
我做了以下工作: 使用activator命令创建了一个新项目:activator new play java 但是,由于软件包的运行,我无法构建该项目。*组织。idea中未识别/导入junit等。不过,我可以毫无问题地执行“activator run”。如果我执行“activator idea”,我会收到以下错误消息: 当我导入这里定义的websocket示例时https://devcenter.
什么是查询以获取所有图书的作者姓名?还有什么是查询得到所有的书的名字为作者的名字?
生成的子实体映射器方法(缺少setChildren或,在我的例子中): 如何让映射器在子级中设置父级?
问题内容: 我想了解Doctrine和Symfony2的多对多关系是如何工作的。 我已经重新创建了官方文档(goo.gl/GYcVE0)中显示的示例,并且我有两个实体类: 用户 和 组 ,如下所示。 如果我更新数据库,则会得到以下MySQL模式: 问题在于,在Symfony2中,我需要 实体 来生成查询,在这种情况下,我没有与表相关联的实体,因为该表是由框架自动创建的。 那么,如何检索与此关系表有
我有什么似乎是一个简单的问题,关于如何设置Jenkins和maven 3。 为了简单起见,假设我们有四个项目: 没有依赖关系的模型 Commons依赖于模型 服务器依赖于Common和模型 前端依赖于模型 我想要实现的是,一个成功的基于模型的构建触发所有项目的新构建,这些项目在其pom中依赖于模型(这里是公共的,服务器和前端) 如果Common失败,则无需构建服务器。 在上述情况下,我似乎可以通过