问答详情
源自:3-5 条件构造器查询(4)

发现个问题,在实体上使用了lombok的@Builder注解,如果不select所有字段,就会报错

@Data
@Builder
public class User {
    @TableId(value = "id",type = IdType.INPUT)
    private Long id;
    private String name;
    private Integer age;
    private String email;
}
@Test
public void selectByQueryWrapperSupper(){
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.select("id","name")
            .like("name","Billie")
            .lt("age",30);
    List<User> users = userDao.selectList(queryWrapper);
    users.forEach(System.out::println);
}

报错内容:

https://img.mukewang.com/5d3db48d0001155e15020570.jpg

把@Builder 的注解去掉,就能正常查出来了

https://img3.mukewang.com/5d3db37b0001cf8108400189.jpg

提问者:慕用1601367 2019-07-28 22:39

个回答

  • 老猿
    2019-07-29 08:39:07

    找到原因了就好,没帮上你什么忙。

  • 慕用1601367
    2019-07-28 22:54:37

    ?找到原因了,是lombok的builder注解的问题。需要给加了@builder的实体手动加上无参构造函数

    @Data
    @Builder(toBuilder = true)
    public class User {
        @TableId(value = "id",type = IdType.INPUT)
        private Long id;
        private String name;
        private Integer age;
        private String email;
    
        @Tolerate
        public User(){ }
    }