我用名称精确查询数据,结果显示
2021-10-31 10:42:28.990 ERROR 16368 --- [nio-8080-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: No constructor found in com.hnsaturn.input005.entity.Song matching [java.lang.Integer, [B, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.time.LocalDateTime, java.time.LocalDateTime]] with root cause
org.apache.ibatis.executor.ExecutorException: No constructor found in com.hnsaturn.input005.entity.Song matching [java.lang.Integer, [B, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.time.LocalDateTime, java.time.LocalDateTime]
我的实体类中是
@Data
@Builder
@EntityScan
public class Song {
private int id;
private String singleName;
private String singer;
private String lyricist;
private String songwriter;
private String arranger;
private String singleContent;
private String album;
private String albumContent;
private String musicStyle;
private String link;
private String lyric;
private String cover;
private Date createTime;
private Date updateTime;
// public Song(){}
}
报错后,写上 无参,但报错,可能是已经生成了。
为什么我去掉@Builder 就可以了。 自己生成了 get set + tostring
控制台报错信息:No constructor found in com.hnsaturn.input005.entity.Song
mybatis 抛出的错误
意思是:你写的类 com.hnsaturn.input005.entity.Song 里面没有构造器(构造函数)
使用了 lombok 插件,构造器应该会自动加上,但是结构缺报错说没有构造器,所以问题肯定出在 lombok 相关的注解 @Builder 和 @Data
原因:
这两个注解同时使用时会导致无法添加无参构造方法。
// 同时使用两个注解时 添加无参构造器,并让 lombok 无感知
@Tolerate
public Song() {}
}