错误信息
在使用IDEA +maven编译项目的时候,实体类报了个'错误: 找不到符号"错误
感觉有点无辜躺枪的感觉。
我们先看下报错的代码。
报错代码
@Data
@EqualsAndHashCode
@Accessors(chain = true)
@TableName("u_store")
@ApiModel(value = "store实体" , description = "浏览")
public class StoreEntity extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "ID")
@TableId(value = "id" , type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "关联名")
private String name;
@ApiModelProperty(value = "类型")
private Integer type;
@ApiModelProperty(value = "排序")
@Builder.Default
private Integer sort = 0;
}
这是个最简单的实体方法了,啥都没做
报了这个异常,感觉整个人都抑郁了。
?解决思路
只能一行行的删代码的方式,去慢慢排查了。
解决方案
后来发现,删除 @Builder.Default,代码编译就OK了
仔细检查了下,发现是没有添加@Builder注解。
坑爹哈,为什么不在编译中明确指出来呢?
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
@Accessors(chain = true)
@TableName("u_store")
@ApiModel(value = "store实体" , description = "浏览")
public class StoreEntity extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
...
总结
就两个注解的事情。浪费了半个多小时。
正常来讲,注解是不能在编译中发现的。注解是运行时动态去识别的。只有在运行的时候才会被触发。编译是不能识别的。
那么@Builder为什么能够识别呢?
那是因为,Lombok中的相关注解都是用来辅助编译的,它编译完成之后,代码里面有Builder模式的代码了。不信的话你可以找下对应的class文件看看。
|