spring data jpa 如何用Specification根据加@Convert注解的属性动态查询,条件是in

spring data jpa 如何用Specification根据加@Convert注解的属性动态查询,条件是in

brandList数据 在数据库是person表的brandList列的字符串数据。

@Entity(name = "person")
@NoArgsConstructor(access = AccessLevel.PRIVATE)
@EqualsAndHashCode
@ToString
public class Person implements EntityObject {
//Brand is a enum class
@Convert(converter = JsonConverter.class)
private List brandList = new ArrayList <>();

public static class JsonConverter implements AttributeConverter, String> {
@Override
public String convertToDatabaseColumn(List list) {
return JSON.toJSONString(list);
}

    @Override
    public List<Brand> convertToEntityAttribute(String s) {
        return JSON.parseArray(s, Brand.class);
    }
}

}

/**
*

  • PersonRepository is a common custom interface without @Repository
    */
    @Repository
    public class PersonRepositoryImpl extends SimpleJpaRepository implements PersonRepository {

    public PersonRepositoryImpl(@Autowired EntityManager em) {
    super(Person.class, em);
    }

    @Override
    public List test(List brandList) {

    return super.findAll((root, query, cb) -> {
        List<Predicate> predicates = new ArrayList();
        /*
       Predicate predicate=cb.in(root.get("brandList"));
        predicate.in(brandList);
       */
        brandList.forEach(brand -> {
            Predicate predicate=cb.like(root.get("brandList"),"%"+brand+"%");
            predicates.add(predicate);
        });
    
        Predicate[] pre = new Predicate[predicates.size()];
        return query.where((Predicate[]) predicates.toArray(pre)).getRestriction();
    });
    

    }

}

写的没头没尾的

https://blog.csdn.net/xcc_2269861428/article/details/80461278