项目开发错误总结 |Field ‘id‘ doesn‘t have a default value | Spring aop不生效 | No serializer found for class

5 篇文章 0 订阅
3 篇文章 0 订阅

文章为个人总结,供各位学者,IT从业者做参考使用,点击部分蓝色标题,可以跳转到更为详细的参考文章。

Unsupported Media Type 415

原因:

  • 没有使用JSON.stringify(rowData)方法将请求参数转化为json字符串
  • 使用@RequestBody注解方式接收媒体文件。BugFix:改为 @RequestParam("file") MultipartFile img 即使用对象来接收

Bad Request 400

"exception":"org.springframework.http.converter.HttpMessageNotReadableException"

原因:前端提交参数与Controller层接收的数据名称,类型不一致

解决:

如果使用了参数化接收,检查参数列表的对应字段是否和前端提交字段的名称和类型一 一对应,也可使用@RequestParam注解指定要用哪个变量接收传来的数据

例:前端传递数据为:

{"username": "xore"},如果你想使用name字段做接收,可以这样使用

public String saveUser(@RequestParam("username") String  name)

如果使用了对象类型做接收,检查封装类中的字段名和类型是否和前端提交字段一 一对应。

 

ZipOutputStream打包压缩文件中出现文件名乱码

原因:该问题存在于部分版本的JDK之中

解决:换用apche的 ZipOutputStream,创建 ZipOutputStream后调用内置的setEncoding("gbk")即可

 

Mybatis部分

Incorrect string value: '\xE5\xB0\x8F\xE6\x98\x8E' for column 'name' at row 1

原因:你所使用的数据库默认字符编码为拉丁格式,无法存放汉字。

解决:如果你使用了可视化的数据库工具,只需将对应数据库和表的编码格式更改为UTF-8即可。

如果你在更改之后,部分列仍然不能插入,请选中对应列,在工具里对相关列进行同样的编码格式更正即可。

CMD命令行参考代码

alter table score default character set utf8;

alter table score change score score varchar(50) character utf8;

Field 'id' doesn't have a default value

原因:id字段为数据库的主键,但是在CRUD的时候没有为id字段赋值。

解决:将id字段设置为自增,或者在进行CRUD操作的时候指定id的值。

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflectio,Could not set property 'id' of 'class cn.xore.entity.Role' with value XXXXX

原因:属性赋值异常,如将Long类型值赋值给了Integer类型,如果你使用了Mybatis-Plus,可能是你没有在Pojo映射类中为数据库中的主键添加注解。

解决:为Pojo中数据库主键所关联的字段添加主键注解,如 @TableId(value = "id", type = IdType.AUTO)

 

The bean 'dataSource', defined in BeanDefinition defined in class path resource

原因:从git上拉取别人的分支时,出现SpringBoot和SpringCloud版本冲突的问题。

如果不清楚需要下载哪个对应版本的SpringCloud组件,可以到Spring官网https://start.spring.io让它帮你选择

在官网选择和你版本最邻近的版本号,比如我是2.2.1,但是官网已经更新到2.2.2,那么选2.2.2就可以了

之后点击页面上的这个按钮,这时会列出很多依赖,向下滚动找到一个SpringCloud依赖,勾上之后点击底部的按钮,这是网站会生成一个项目包,OMG,下它下它下它。

下载完成后,打开pom文件,把Spring为你精心挑选的依赖拷贝即用。

 

Spring AOP不生效:

可能的原因:

1.切入点表达式没有写对

2.依赖导入不正确:

对于最新版本的SpringBoot,一般使用如下依赖:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
            <version>2.4.2</version>
        </dependency>

如果你使用了Aspectj来实现AOP,需要导入这两个依赖,你可能只导入了一个,当然不起作用:

		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>1.8.13</version>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.8.13</version>
		</dependency>

No serializer found for class 

一般这个问题发生在Restful接口返回对象的时候,以及对对象进行序列化时

解决方案:检查要使用的对象是否实现了序列化接口(implements Serializable)

 

Specified key was too long; max key length is 767 bytes

数据库使用的字符集是utf8mb4,每个字符最大的字节数为四个字节,当使用varchar类型存储字符串时,存储255个字符串会超过索引长度允许的上线,调小即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值