jpa-实体类自动生成数据库表格失败

时间:2024-03-20 18:27:22

线上书店springboot jpa建表

今天设计完数据库关系后开始建立实体类,并利用注解进行自动建表,产生错误,感觉很迷惑。

解决完错误之后,看着刚生成的12张表忍不住感叹,啊,这个自动建表也太棒了吧!不然手动建这么多表就能把我掰扯死。
jpa-实体类自动生成数据库表格失败

下面是错误分析:

其中一个报错(都是同一个类型):

Could not determine type for: com.sdcz.entity.Book, at table: t_order_item, for columns: [org.hibernate.mapping.Column(book)]

在网上查找资料时,并未能查到相应错误。(可能是因为我每次太蠢了犯错都是别人不会犯的)

解决过程

找到实体类OrderItem的book,然后看着看着,没找到不和谐的点。把分析错误的重心放在了表中列的关系是否正确上,然后检查了好多遍,因为类比较多,有些关系又很多,所以担心自己考虑不周到,反复观察仔细对应起来。未能发现错误。

于是百度错误原因,结果一直没找到。

开始看注解详细用法,看半天仍然没发现不和谐点。

对着错误看啊看,突然想起来,实体类中的每一个成员默认都是一个列,但是book是一个实体类,没法充当一个列,应该改为bookID,一个真正能充当列的成员。

错误总结

在平常的java用法中,众所周知,Java是一门面向对象的语言,在平时我们用类来声明变量是常见用法。由于习惯,未能意识到自己不能使用实体类来声明实体类中的变量。(如果不是它们之间有什么和many有关的关系的话……)

项目经验不够,不能摆脱惯性思维,思考不够彻底是错误原因。希望以后少犯错,能有所进步。

注解用法实例

此处再顺便放一些今天建实体类用到的注解:
(让我再重新高呼一声,springboot注解实在是太方便了,对于我这个经常粗心把一些小东西写错的废物程序员来说)

jpa-实体类自动生成数据库表格失败

注解 用法
@Entity 声明实体类
@Data lombok工具自动构造setter、getter、toString函数
@AllArgsConstructor lombok工具自动构造全参构造函数
@NoArgsConstructor lombok工具自动构造无参构造函数
@Builder lombok工具自动构造各种构造函数
@Id id
@GeneratedValue 自增
@OneToMany 一对多映射
@ManyToOne 多对一映射
@ManyToMany 多对多映射
最后是今天的springboot学习笔记图

(可能没什么用,就是记着提醒我自己用的)
jpa-实体类自动生成数据库表格失败