[英]Mapping String to enum jooq
有沒有一種直接的方法可以將 MySQL 中的字段映射到 JOOQ 中的枚舉? 該字段是USER_STATUS
,可能的值由
public enum Status {
ACTIVE, INACTIVE, SUSPENDED
}
我嘗試使用forcedType:
<forcedType>
<userType>com.mycompany.Status</userType>
<expressions>USER_STATUS</expressions>
</forcedType>
但是,這不會觸發生成的代碼中的任何更改。 我嘗試了小寫和大寫,在列名 (user_status) 前加前綴和后綴“.*”。 似乎沒有任何效果。 我究竟做錯了什么?
謝謝!
<forcedType/>
元素有多種操作模式,每種模式都需要一個額外的子元素:
在這種情況下,您需要一個<name/>
元素來將USER_STATUS
列映射到另一種數據類型。 但是,這不適用於枚舉類型。
將數據庫類型映射到您自己的<userType/>
一種方法是應用<converter>
(即org.jooq.Converter
)或<binding/>
(即org.jooq.Binding
)。 使用這種方法可以完全控制數據庫類型和用戶類型之間的轉換。 您也可以為此使用內置的org.jooq.impl.EnumConverter
。
EnumConverter
適用於序數映射和 1:1 字符串到java.lang.Enum.name()
映射。 如果您在數據庫中的枚舉值具有不可映射的字符串(例如包含空格),那么您需要應用手動映射/轉換器。
最簡單的解決方案是在您的<forcedType/>
上使用<enumConverter>true</enumConverter>
標志,如果您沒有任何特殊情況,它也會為您應用org.jooq.impl.EnumConverter
。 這也記錄在<forcedType/>
元素中。
與org.jooq.impl.EnumConverter
相同的規則適用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.