在(Collection <?>)方法中使用JPA规范时,没有返回结果

魔方

我正在尝试使用Spring Data JPA Specification来实现此SQL查询的等效项:

SELECT * FROM product WHERE category_id IN (....)

此查询涉及的两个实体具有OneToManyManyToOne关系:

产品实体:

@Data
@NoArgsConstructor
@Entity
@Table(name = "PRODUCT")
public class ProductEntity extends AbstractAuditableEntity {

    // skipped other properties for simplicity sake

    @ManyToOne
    private CategoryEntity categoryEntity;

}

CategoryEntity:

@Entity
@Table(name = "PRODUCT_CATEGORY")
@Data
public class CategoryEntity extends AbstractBaseEntity {

    // skipped other properties for simplicity sake

    @OneToMany(mappedBy = "categoryEntity")
    private List<ProductEntity> productEntities;

}

我的JPA规范查询可以编译并运行,没有任何错误,但是不返回任何结果:规范定义:

public static Specification<ProductEntity> inCategories(List<Long> categories) {
    return (root, query, builder) -> {
        if (categories != null && !categories.isEmpty()) {
            final Path<CategoryEntity> category = root.get("categoryEntity");
            return category.get("id").in(categories);
        } else {
            // always-true predicate, means that no filtering would be applied
            return builder.and();
        }
    };
}

客户代码:

    Page<ProductEntity> productEntityPage = productRepository.findAll(Specification
                    .where(ProductSpecifications.inCategories(filterCriteria.getCategories()))
            , pageRequest);

为什么不起作用?使用SQL语句查询数据库时会得到结果,因此我的JPA规范查询或实体映射一定存在问题。

我想念什么?

尼古拉·舍甫琴科

我想你应该在这里使用join

Join<Product, CategoryEntity> categoryJoin = root.join("categoryEntity");
return categoryJoin.get("id").in(categories);

代替

Path<CategoryEntity> category = root.get("categoryEntity");
return category.get("id").in(categories);

因为root.get("categoryEntity");不会提供任何信息,因为表中不存在此类路径(product.categoryEntity.idproduct

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

运行测试时,Postman Collection Runner返回“没有测试”

来自分类Dev

有没有一种方法可以使用PyMongo检查collection.find是否返回false?

来自分类Dev

如何返回JPA中最大的Collection的大小?

来自分类Dev

如何返回JPA中最大的Collection的大小?

来自分类Dev

使用JPA Criteria API返回Collection属性包含特定值的所有对象

来自分类Dev

在使用 JPA order by 排序或使用 collection sort() 方法排序中,哪种排序方法是有效的?

来自分类Dev

使用Stream时返回Collection中的数组索引

来自分类Dev

在ajax调用后返回Collection

来自分类Dev

作为流星方法的结果,如何使用collection.find?

来自分类Dev

没有在后端创建Meteor Collection

来自分类Dev

在Firestore中,有没有一种方法可以获取在python中使用collection_group查询检索的文档的完整文档路径?

来自分类常见问题

在Kotlin中实现返回Collection的Java方法

来自分类Dev

如何使我的方法改为返回Collection <Character>

来自分类Dev

使用collection时执行magento sql时

来自分类Dev

在Windows Universal Collection中使用DesignData

来自分类Dev

如何在循环中使用 Collection

来自分类Dev

如何在 pyplot 中使用 Line Collection

来自分类Dev

Collection.upsert()与具有“ upsert:true”的Collection.update()

来自分类Dev

使用通用Collection类获取其他类的Collection

来自分类Dev

复杂的collection.find()查询并使用{{#each collection}}进行渲染

来自分类Dev

使用对Mongodb Collection的静态引用

来自分类Dev

Mockito-使用Collection时的ClassCastException

来自分类Dev

使用scala.collection.Searching时的排序

来自分类Dev

Mockito-使用Collection时的ClassCastException

来自分类Dev

从LINQ查询结果填充Observable Collection

来自分类Dev

如何从collection.findone()保存结果

来自分类Dev

如何使用Java中的多个线程来遍历Collection,而没有两个线程可以遍历Collection的相同部分?

来自分类Dev

如何使用Java中的多个线程来遍历Collection,而没有两个线程可以遍历Collection的相同部分?

来自分类Dev

当通过反射调用它时,返回Collection的方法将返回一个数组?

Related 相关文章

  1. 1

    运行测试时,Postman Collection Runner返回“没有测试”

  2. 2

    有没有一种方法可以使用PyMongo检查collection.find是否返回false?

  3. 3

    如何返回JPA中最大的Collection的大小?

  4. 4

    如何返回JPA中最大的Collection的大小?

  5. 5

    使用JPA Criteria API返回Collection属性包含特定值的所有对象

  6. 6

    在使用 JPA order by 排序或使用 collection sort() 方法排序中,哪种排序方法是有效的?

  7. 7

    使用Stream时返回Collection中的数组索引

  8. 8

    在ajax调用后返回Collection

  9. 9

    作为流星方法的结果,如何使用collection.find?

  10. 10

    没有在后端创建Meteor Collection

  11. 11

    在Firestore中,有没有一种方法可以获取在python中使用collection_group查询检索的文档的完整文档路径?

  12. 12

    在Kotlin中实现返回Collection的Java方法

  13. 13

    如何使我的方法改为返回Collection <Character>

  14. 14

    使用collection时执行magento sql时

  15. 15

    在Windows Universal Collection中使用DesignData

  16. 16

    如何在循环中使用 Collection

  17. 17

    如何在 pyplot 中使用 Line Collection

  18. 18

    Collection.upsert()与具有“ upsert:true”的Collection.update()

  19. 19

    使用通用Collection类获取其他类的Collection

  20. 20

    复杂的collection.find()查询并使用{{#each collection}}进行渲染

  21. 21

    使用对Mongodb Collection的静态引用

  22. 22

    Mockito-使用Collection时的ClassCastException

  23. 23

    使用scala.collection.Searching时的排序

  24. 24

    Mockito-使用Collection时的ClassCastException

  25. 25

    从LINQ查询结果填充Observable Collection

  26. 26

    如何从collection.findone()保存结果

  27. 27

    如何使用Java中的多个线程来遍历Collection,而没有两个线程可以遍历Collection的相同部分?

  28. 28

    如何使用Java中的多个线程来遍历Collection,而没有两个线程可以遍历Collection的相同部分?

  29. 29

    当通过反射调用它时,返回Collection的方法将返回一个数组?

热门标签

归档