2016-06-01 43 views
1

我有一個簡單的對象名爲Group其中包含一個GroupType枚舉。DataTypeException與Jooq newRecord和一個枚舉

public enum GroupType { 
    PRIMARY, 
    SECONDARY 
} 

我建立一個新的Group並保存

Group group = new Group(); 
group.setName(PRIMARY.name()); 
group.setType(PRIMARY); 
Group g = save(); 

save開始了與

R record = (R) dsl.newRecord(Groups.GROUPS, group); 

這行代碼是拋出

Caused by: org.jooq.exception.DataTypeException: Cannot convert from PRIMARY (class com.domain.entities.support.GroupType) to class com.domain.jooq.generated.enums.GroupType 
    at org.jooq.tools.Convert$ConvertAll.fail(Convert.java:1113) 
    at org.jooq.tools.Convert$ConvertAll.from(Convert.java:1002) 
    at org.jooq.tools.Convert.convert0(Convert.java:316) 
    at org.jooq.tools.Convert.convert(Convert.java:308) 
    at org.jooq.tools.Convert.convert(Convert.java:380) 
    at org.jooq.impl.DefaultDataType.convert(DefaultDataType.java:698) 
    at org.jooq.impl.Tools.setValue(Tools.java:1975) 
    at org.jooq.impl.AbstractRecord.from(AbstractRecord.java:829) 

如何枚舉工作與newRecord

+0

您使用的數據庫是?你從數據庫中生成枚舉類嗎? –

+0

使用Postgres 9.5。是的,我從數據庫中生成了枚舉類。基本上,我最終得到了一個像上面那樣的GroupType枚舉,然後是一個Jooq生成的GroupType(同名,不同的包)。我沒有什麼特別的地方在我的pom.xml中定義了生成的配置。只是'java.time'的一些自定義類型。這是正確的方法還是需要枚舉? –

回答

0

錯誤消息說它:

Cannot convert from PRIMARY (class com.domain.entities.support.GroupType) 
          to class com.domain.jooq.generated.enums.GroupType 

看來,你使用兩種不同類型的GroupType枚舉。 jOOQ只理解jOOQ生成的枚舉類型(com.domain.jooq.generated.enums.GroupType),而不是您自己的(com.domain.entities.support.GroupType)。

如果您確實想使用自己的枚舉類型,則需要在TYPE列上註冊Converter以在兩種類型之間進行轉換。