線上書店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學習筆記圖
(可能沒什麼用,就是記着提醒我自己用的)