Контекст - Я пробую расширение географической информационной системы Postgres PostGis , которое разрешает широту и долготу историй как Точка и операции с ней.
Если я правильно понимаю , тогда мне нужно добавить пользовательский конвертер, который может конвертировать point
между JOOQ и PostGis и добавить его в файл Gradle.
Проблема - Когда я генерирую jooq-код, несколько файлов генерируются неправильно и имеют поля, определенные дважды, что не позволяет компиляции.Это:
<configured-generation-dir>/tables/StValuecount.java
<configured-generation-dir>/tables/records/StValuecountRecord.java
<configured-generation-dir>/tables/records/StValuepercentRecord.java
<configured-generation-dir>/tables/_StValuecount.java
<configured-generation-dir>/tables/records/_StValuecountRecord.java
<configured-generation-dir>/tables/_StHistogram.java
<configured-generation-dir>/tables/records/_StHistogramRecord.java
<configured-generation-dir>/tables/_StQuantile.java
Конфигурация Gradle =>
jooq{
myAwesomeApp(sourceSets.main){
logging = 'WARN'
jdbc {
driver = 'org.postgresql.Driver'
url = db_url
user = db_user
password = db_password
}
generator {
name = 'org.jooq.codegen.DefaultGenerator'
strategy {
name = 'org.jooq.codegen.DefaultGeneratorStrategy'
}
database {
name = 'org.jooq.meta.postgres.PostgresDatabase'
inputSchema = 'public'
forcedTypes {
forcedType {
userType = 'org.postgis.Point'
converter = 'com.example.JooqBreaksWithPostGis.jooq.converters.PostgresPointJooqConverter'
expression = '.*\\.point'
types = '.*'
}
}
}
generate {
routines = false
relations = true
deprecated = false
records = true
immutablePojos = false
fluentSetters = true
}
target {
packageName = 'jooq.fancy.app'
directory = 'src/main/java/generated'
}
}
}
}
Что я делаю не так?
Я также создалминимальный проект , в котором я воспроизвел проблему на случай, если кто-то захочет быстро ее попробовать.
Шаги для воспроизведения
git clone git@github.com:raj-saxena/JooqBreaksWithPostGis.git
- Перейдите в каталог проекта и запустите контейнер postgis docker с помощью
docker-compose up
- Аналогично, для удаления контейнера postgis docker запустите
docker-compose down
- Запуск миграций, которые добавляют простую таблицу
City
, содержащую тип Point
, с
./gradlew flywayMigrate
./gradlew generateMyAwesomeAppJooqSchemaSource
Убедитесь, что файлы созданы в настроенном каталоге src/main/java/generated
.
Убедитесь, что файлы, упомянутые выше, не могут быть скомпилированы.
Принимая совет Лукаса , я добавил конфигурацию исключения в конфигурацию jooq, как показано ниже:
database {
name = 'org.jooq.meta.postgres.PostgresDatabase'
...
excludes = '.*ST_ValueCount' +
'|.*St_Valuepercent' +
'|.*St_Histogram' +
'|.*St_Quantile' +
'|.*St_Approxhistogram' +
'|.*St_PixelOfValue' +
'|.*St_Approxquantile' +
'|.*ST_Tile'
}
Это позволилокод для компиляции.