天天看點

jpa-實體類自動生成資料庫表格失敗

線上書店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-實體類自動生成資料庫表格失敗