Java實體類之—enum列舉型別屬性

Java實體類之—enum列舉型別屬性

今天在專案中發現了一個實體類中有列舉型別的屬性,並且在宣告的時候加上了

@Enumerated(EnumType.STRING)

的註解。

 

同事在查詢的時候發現報了錯誤,於是就百度了一下這個註解的意義,發現這個是hibernate的一個列舉註解。

Error attempting to get column ‘level’ from result set.  Cause: java.lang.IllegalArgumentException: No enum constant com.kylin.blitz.dao.enums.MemberLevel.5
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.result.ResultMapException:

 

@Enumerated(EnumType.STRING)

EnumType有兩個屬性,一個是STRING,一個是ORDINAL,當使用的是STRING的時候,資料庫對應儲存的是註解的名稱

當註解使用的是ORDINAL的時候,資料庫對應儲存的是註解的值

在這裡寫下記錄一下,使用列舉類當做實體類對應資料庫的時候,可以使用hibernate的註解@Enumerate進行對映,具體資料庫儲存的是列舉的名稱還是列舉的值,則根據註解裡面的EnumType來決定,STRING儲存的是名稱,ORDINAL儲存的是值。