Spring中实体类关联映射同一张表的问题及解决——举报系统@ManyToOne注解失效排查
分享:@ManyToOne关联映射未生效的排查与解决
最近开发举报系统时踩了个坑,特意记录下来给遇到同类问题的朋友参考:
我搭建举报系统时创建了UserReport数据表,表内的reporter和reportedUser两个字段都关联User类型的数据,对应的实体类里我用@ManyToOne注解做关联映射,但反复调试后发现这个关联配置始终不生效。
折腾了好一阵才定位到问题根源:我的数据库表中使用了MySQL的保留字explain!MySQL会将保留字识别为SQL关键字,导致ORM框架生成SQL语句时出现解析异常,进而让关联映射注解无法正常工作。
对应的解决方式有两种:
- 如果不想修改字段名,可以在实体类的字段注解里用反引号包裹保留字,比如
@Column(name = "explain"),让框架正确识别字段; - 更稳妥的方案是直接修改字段名,避开MySQL的保留字列表。
内容的提问来源于stack exchange,提问作者Jaeyoon Lee
相关产品推荐
相关产品推荐

