首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对父级集合- Hibernate规范的查询

对父级集合- Hibernate规范的查询
EN

Stack Overflow用户
提问于 2021-05-17 14:20:59
回答 1查看 119关注 0票数 0

我用Hibernate创建了三个表。Product是父产品,而条形码是一个集合端,是产品的一个子类(一对多)。

代码语言:javascript
复制
@NotBlank
private String ref;    

@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "products_barcodes")
@Fetch(FetchMode.SELECT)
private List<String> barcodes;


@OneToMany(mappedBy = "parent", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
private List<PriceEntity> prices;

我试图从孩子(Price)开始进行查询。我能够查询字符串,但现在我想查询集合的元素。

代码语言:javascript
复制
     Specifications<PriceEntity> specifications = where(hasTenant(tid));

     if (isNotBlank(ref)) {
         specifications = specifications.and(hasRef(ref));
     }

     if (isNotBlank(barcode)) {
         specifications = specifications.and(hasBarcode(barcode));
     }


     /*********************************/


    public static Specification<PriceEntity> hasRef(final String ref) {

        return new Specification<PriceEntity>() {

            @Override
            public Predicate toPredicate(Root<PriceEntity> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {

                return criteriaBuilder.equal(root.<PriceEntity>get("parent").get("ref"), ref);
            }
        };
    }

public static Specification<PriceEntity> hasBarcode(final String barcode) {

    return new Specification<PriceEntity>() {

        @Override
        public Predicate toPredicate(Root<PriceEntity> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {

            return criteriaBuilder.equal(root.<PriceEntity>get("parent").get("barcodes"), barcode);
        }
    };
}

你怎么写说明书?上面的一个不起作用,我在运行时得到了这个异常:

代码语言:javascript
复制
"IllegalArgumentException: Parameter value [8003921360408] did not match expected type [java.util.Collection (n/a)]"

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-21 07:41:06

托马斯的评论解决了这个问题。

对于集合,应该使用criteriaBuilder.isMember

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67571570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档