IDEA中配置@Entity时@Column注解指定的字段报错cannot resolve column的问题

问题描述

在IDEA中用注解配置MySQL数据库的实体类Entity时,已经给实体类分配好了数据库源(assign data source)了,由图中的圈1、圈2、圈4可证明;@Entity和@Table均是正常,只有@Column注解,报找不到指定字段(cannot resove column),由图4可知字段实际是有的。

IDEA中配置@Entity时@Column注解指定的字段报错cannot resolve column的问题

问题分析

造成该问题的原因不在@Column注解,而是在于@Table注解。将@Table注解中的catalog属性换成schama属性,问题即可解决。所以在造成这个问题的最终原因是没有搞清楚catalog和schema的区别(在此之前我一直以为这两个是属性是等价的,可互换的)。

catalog,schema以及table之间的关系可以描述为:
从概念上说,一个数据库系统包含多个Catalog,每个Catalog又包含多个Schema,而每个Schema又包含多个数据库对象(表、视图、字段等),反过来讲一个数据库对象必然属于一个Schema,而该Schema又必然属于一个Catalog,这样我们就可以得到该数据库对象的完全限定名称从而解决命名冲突的问题了;例如数据库对象表的完全限定名称就可以表示为:Catalog名称.Schema名称.表名称。

而从图中右侧的数据库结构图中可以看出user表是从属于mydb的schema,而不是catalog;

IDEA中配置@Entity时@Column注解指定的字段报错cannot resolve column的问题