Dönüştürücü ile Enum JOOQ Cast Dize

oy
0

İ genelinde stubled bir Enum içine benim dize alanını döküm için bir yol bakarken .cast()Yöntemi. Çağrıldığında bir atar SQLDialectNotSupportedException.
Lehçesi olarak ayarlayın edilmiştir SQLSERVER2014Bağlamında DSLContext create = DSL.using(conn, SQLDialect.SQLSERVER2014);.
Karşılık gelen satır:

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

Tam Hata:

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)

Bir Converter ile Enum bir dönüşümü başarmak için çalıştı ama ben çalışan alınamıyor.

İçine Converter almanın bir yolu var mı cast()yoksa bulamıyorum Enum içine Dize almak için başka bir yol var mı?

Oluştur 24/10/2019 saat 11:52
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
1

Sen kullanamaz cast()o özel tip için veri türünü döküm nasıl anlamak jOOQ gerektirecektir, çünkü burada SQL . Ne yapmak istediğiniz bir istemci tarafı dönüşüm olduğunu ve ideal olarak kullanılarak elde edilir Converter.

Uyguladığınız ardından küçük resmin Converter, kullanmak için önerilen yol kod jeneratörü kullanılarak oluşturulan koda eklemek için: 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>

Bu bir seçenek değil, aşağıdaki gibi, bir "dönüştürülmüş" alanı referans oluşturabilirsiniz:

// 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)...

Ama gerçekten en convience için oluşturulan koda dönüştürücü takılarak önerilir.

Cevap 24/10/2019 saat 14:37
kaynak kullanıcı

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