JOOQ Cast karakterlánc Felsorolt ​​átalakítóval

szavazat
0

Miközben keresi a módját, hogy a leadott én string mező egy Felsorolt i stubled az egész .cast()eljárás. Amikor nevezte dob SQLDialectNotSupportedException.
Nyelvjárás lett állítva, SQLSERVER2014a Context DSLContext create = DSL.using(conn, SQLDialect.SQLSERVER2014);.
A megfelelő sor:

create.select( ... lecture.DAY_OF_WEEK.cast(DayOfWeek.class), ... );  

A teljes Hiba:

org.jooq.exception.SQLDialectNotSupportedException: Type class java.time.DayOfWeek is not supported in dialect null
at org.jooq.impl.DefaultDataType.getDataType(DefaultDataType.java:944)
at org.jooq.impl.DefaultDataType.getDataType(DefaultDataType.java:880)
at org.jooq.impl.AbstractField.cast(AbstractField.java:256)
at de.esteam.lecturedb.jooq.Classes.Startup.getStandardExample(Startup.java:218)
at de.esteam.lecturedb.jooq.Classes.Startup.main(Startup.java:54)

Próbáltam elérni a konverzió a Felsorolt ​​egy átalakító, de én nem értem fut.

Van egy módja, hogy a konverter az cast()vagy van egy másik módja, hogy a karakterlánc a Felsorolt nem találom?

A kérdést 24/10/2019 12:52
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
1

Nem tudja használni cast()itt, mert lenne szükség jOOQ hogy megértsük, hogyan öntött el adattípust az egyéni típusú SQL . Mit kíván tenni a kliens oldali átalakítás, és hogy elérjük ideális alkalmazásával Converter.

Miután végrehajtotta a Converter, az ajánlott módja, hogy használja azt, hogy csatolja a generált kódot a kódgenerátor: https://www.jooq.org/doc/latest/manual/code-generation/custom-data-types

<forcedType>
  <userType>java.time.DayOfWeek</userType>
  <converter>com.example.YourConverter</converter>
  <includeExpression>(?i:DAY_OF_WEEK)</includeExpression>
</forcedType>

Ha ez nem lehetséges, akkor létrehozhat egy „átalakított” mezőhivatkozás az alábbiak szerint:

// I'm assuming you're storing the data as an INTEGER
DataType<DayOfWeek> type = SQLDataType.INTEGER.asConvertedDataType(new YourConverter());
Field<DayOfWeek> field = DSL.field("{0}", type, lecture.DAY_OF_WEEK);

// And now use that instead
create.select(field)...

De én nagyon ajánlom rögzíti a konverter a generált kód a legtöbb convience.

Válaszolt 24/10/2019 15:37
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more