ChenMoDaoShi 2020-06-12 17:24 采纳率: 0%
浏览 565

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();
    });
    

    }

}

  • 写回答

2条回答 默认 最新

  • cyc川 2021-09-14 14:29
    关注

    写的没头没尾的

    评论

报告相同问题?

悬赏问题

  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图