代碼筆記

「Java筆記」 持久層的踩坑之路(集中更新)

原文地址:https://www.miaoroom.com/code/note/mybatis-debug-notes.html
出處:喵容

本文會零零碎碎的更新自己在學習 Java持久層 碰到的問題和解決辦法,希望這些踩坑的歷程能給需要的你帶來幫助。

由於文章主要為 Spring Data JPAMybatis 的內容。

1. org.hibernate.AnnotationException: No identifier specified for entity:

private Integer categoryId;

這個錯誤看上去是這張表沒有主鍵,在使用hibernate的映射表的時候entity類是必須要主鍵的,否則就會報出這個異常。所以解決如下,添加自增的ID主鍵:

@Id
@GeneratedValue
private Integer categoryId;

如果我們已經配置了@ID,還會報這個錯誤是因為import錯包了,錯誤的使用了org.springframework.data.annotation.Id包。

當我們使用@Entity的時候,提示我們Entity過時,被划了橫線,是因錯誤的引用了org.hibernate.annotations.Entity包,這裡應該使用JPA的註解javax.persistence.Entity,而不是hibernate的。

Table ‘XXX.hibernate_sequence’ doesn’t exist

在實體中,將ID生成略組改成@GeneratedValue(strategy = GenerationType.IDENTITY)。

如以下:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer categoryId;

刪測試數據很麻煩

在方法前加上 code>@Transactional 註解,會讓你當前的事務操作在執行完成後完全回滾。若執行完未報錯,則意為測試通過。可搭配Aseert斷言使用,這樣便省去了我們測試完還要刪除測試數據的多餘操作。

‘PageRequest(int, int)’ is deprecated

PageRequest類使用的時候利用new一個對象的時候報錯,所這個方法過時了,解決方法

PageRequest pageRequest=new PageRequest(int ,int );//提示方法過時

應該使用

PageRequest request = PageRequest.of(0,1);

一對多查詢 java.lang.IllegalStateException: No typehandler found for property

在使用tk.mybatis建立實體的時候我們使mapper繼承myMapper不需要我們對mapper.xml文件中寫很多重複的代碼了,如果因為表中沒有實體中對應的字段而出現錯誤Caused by: java.lang.IllegalStateException: No typehandler found for property xxx,這種情況下就需要你去排查字段。

  1. 如果你有字段沒能和數據庫中的對應,應該使用@Column(name = "xxx")或者直接把變數名叫的和數據庫中字段名字相同。
  2. 當有時我們需要忽略這些字段,那麼就可以使用@Transient來加在這個字段的頭上。
  3. 如果此時你的程式依舊這樣報錯,就檢查你所有的實體,把所有的實體都檢查一遍,修改之後這時你的程式應該就沒有錯誤了。

mybatis傳入單個或多個參數

1、傳入一個參數時

id為mapper接口中的方法名,resultMap為返回類型,parameterType為輸入參數的類型

mapper接口配置:

對應的xml配置:

2、傳入多個參數時

mapper接口配置:

對應的xml配置:

由於是多參數那麼就不能使用parameterType, 這裡用@Param來指定哪一個

View Comments

Recent Posts

2023 年 WordPress 中最棒的多語言翻譯外掛推薦

擔心如何翻譯您的網站語言以支持…

12月 ago

2023 年 WordPress 中最棒的可視化頁面構建器外掛推薦

在設計任何頁面或網站時,對於不…

12月 ago

Ella 多用途 Shopify 佈景主題

Shopify 佈景主題市場上有許…

12月 ago

AI Engine Pro

喵容今天帶來的 AI Engi…

12月 ago

AIKit

喵容今天為您帶來 AIKit …

1年 ago

AIomatic

喵容今天為您帶來AIOmati…

1年 ago