有没有一种简单的方法将mysql中的字段Map到jooq中的enum?场地是 USER_STATUS
,可能的值由
public enum Status {
ACTIVE, INACTIVE, SUSPENDED
}
我试着用forcedtype:
<forcedType>
<userType>com.mycompany.Status</userType>
<expressions>USER_STATUS</expressions>
</forcedType>
但是,这并没有在生成的代码中触发任何更改。我尝试了小写和大写,用“.*”作为列名(user\u status)的前缀和后缀。似乎什么都没用。我做错什么了?
谢谢!
1条答案
按热度按时间qvsjd97n1#
这个
<forcedType/>
元素有几种操作模式,每种模式都需要一个子元素:数据类型重写
在这种情况下,你需要
<name/>
要Map的元素USER_STATUS
列到另一个数据类型。但这不适用于枚举类型。应用转换器或绑定
一种将数据库类型Map到自己的类型的方法
<userType/>
是通过应用<converter>
(即。org.jooq.Converter
)或者<binding/>
(即。org.jooq.Binding
). 使用这种方法可以完全控制数据库类型和用户类型之间的转换。你也可以使用内置的org.jooq.impl.EnumConverter
为了这个。这个
EnumConverter
适用于顺序Map和1:1字符串到java.lang.Enum.name()
Map。如果数据库中的枚举值具有不可Map的字符串(例如,包含空格),则需要应用手动Map/转换器。应用枚举转换器(jooq 3.10+)
最简单的解决方案是使用
<enumConverter>true</enumConverter>
旗子挂在你的脸上<forcedType/>
,如果您没有任何特殊情况,这也将适用org.jooq.impl.EnumConverter
为你。这也被记录为<forcedType/>
元素。和你的规则一样
org.jooq.impl.EnumConverter
应用。