在使用mybatis-plus的过程中,遇到了如下的错误
### Cause: java.sql.SQLSyntaxErrorException: Unknown column 'childs' in 'field list'
; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Unknown column 'childs' in 'field list'] with root cause
java.sql.SQLSyntaxErrorException: Unknown column 'childs' in 'field list'
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:536) ~[mysql-connector-java-6.0.6.jar:6.0.6]
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:513) ~[mysql-connector-java-6.0.6.jar:6.0.6]
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:115) ~[mysql-connector-java-6.0.6.jar:6.0.6]
at com.mysql.cj.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:1983) ~[mysql-connector-java-6.0.6.jar:6.0.6]
at com.mysql.cj.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1826) ~[mysql-connector-java-6.0.6.jar:6.0.6]
我的数据字典如下
Java代码如下
@TableName(value = "area")
public class Area {
@TableId
private long id;
private String areaName;// 区域名称
private int level;// 层级
private List<Area> childs;
private Area parent;
其中的childs字段和parent字段在数据字典中不存在,因此映射出现了错误
我的解决办法是:忽略掉这俩个字段
mybatis-plus忽略映射字段
@TableField(exist = false):表示该属性不为数据库表字段,但又是必须使用的。
@TableField(exist = true):表示该属性为数据库表字段。
于是乎,Java代码如下
@TableName(value = "area")
public class Area {
@TableId
private long id;
@TableField(exist = true)
private String areaName;// 区域名称
private int level;// 层级
@TableField(exist = false)
private List<Area> childs;
@TableField(exist = false)
private Area parent;
再次运行,欧克~~