线上书店springboot jpa建表
今天设计完数据库关系后开始建立实体类,并利用注解进行自动建表,产生错误,感觉很迷惑。
解决完错误之后,看着刚生成的12张表忍不住感叹,啊,这个自动建表也太棒了吧!不然手动建这么多表就能把我掰扯死。
下面是错误分析:
其中一个报错(都是同一个类型):
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注解实在是太方便了,对于我这个经常粗心把一些小东西写错的废物程序员来说)
注解 | 用法 |
---|---|
@Entity | 声明实体类 |
@Data | lombok工具自动构造setter、getter、toString函数 |
@AllArgsConstructor | lombok工具自动构造全参构造函数 |
@NoArgsConstructor | lombok工具自动构造无参构造函数 |
@Builder | lombok工具自动构造各种构造函数 |
@Id | id |
@GeneratedValue | 自增 |
@OneToMany | 一对多映射 |
@ManyToOne | 多对一映射 |
@ManyToMany | 多对多映射 |
最后是今天的springboot学习笔记图
(可能没什么用,就是记着提醒我自己用的)