generator-jhipster 7.6.0 → 7.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (432) hide show
  1. package/README.md +1 -4
  2. package/cli/commands.js +3 -0
  3. package/cli/environment-builder.js +53 -18
  4. package/cli/import-jdl.js +3 -0
  5. package/cli/index.mjs +20 -0
  6. package/cli/jhipster.js +19 -11
  7. package/cli/program.js +94 -38
  8. package/generators/app/esm.mjs +1 -3
  9. package/generators/app/index.js +11 -16
  10. package/generators/aws/esm.mjs +1 -3
  11. package/generators/azure-app-service/esm.mjs +1 -3
  12. package/generators/azure-spring-cloud/esm.mjs +1 -3
  13. package/generators/base/esm.mjs +1 -3
  14. package/generators/bootstrap/esm.mjs +1 -3
  15. package/generators/bootstrap/index.js +36 -86
  16. package/generators/bootstrap-application/esm.mjs +19 -0
  17. package/generators/bootstrap-application/generator.mjs +353 -0
  18. package/generators/bootstrap-application/index.mjs +19 -0
  19. package/generators/ci-cd/esm.mjs +1 -3
  20. package/generators/ci-cd/index.js +1 -1
  21. package/generators/ci-cd/prompts.js +1 -1
  22. package/generators/ci-cd/templates/github-actions.yml.ejs +6 -6
  23. package/generators/client/esm.mjs +5 -3
  24. package/generators/client/files-angular.js +9 -0
  25. package/generators/client/files-common.js +9 -9
  26. package/generators/client/files-react.js +25 -2
  27. package/generators/client/files-vue.js +7 -6
  28. package/generators/client/index.js +3 -2
  29. package/generators/client/needle-api/needle-client-react.js +11 -8
  30. package/generators/client/templates/angular/angular.json.ejs +2 -10
  31. package/generators/client/templates/angular/jest.conf.js.ejs +1 -1
  32. package/generators/client/templates/angular/package.json +29 -27
  33. package/generators/client/templates/angular/package.json.ejs +6 -2
  34. package/generators/client/templates/angular/src/main/webapp/app/account/activate/activate.component.html.ejs +1 -1
  35. package/generators/client/templates/angular/src/main/webapp/app/account/password/password.component.html.ejs +7 -7
  36. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.html.ejs +5 -5
  37. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/init/password-reset-init.component.html.ejs +3 -3
  38. package/generators/client/templates/angular/src/main/webapp/app/account/register/register.component.html.ejs +10 -10
  39. package/generators/client/templates/angular/src/main/webapp/app/account/settings/settings.component.html.ejs +8 -8
  40. package/generators/client/templates/angular/src/main/webapp/app/admin/configuration/configuration.component.html.ejs +2 -2
  41. package/generators/client/templates/angular/src/main/webapp/app/admin/gateway/gateway.component.html.ejs +5 -5
  42. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.html.ejs +1 -1
  43. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.spec.ts.ejs +2 -2
  44. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.ts.ejs +2 -2
  45. package/generators/client/templates/angular/src/main/webapp/app/admin/health/modal/health-modal.component.html.ejs +6 -6
  46. package/generators/client/templates/angular/src/main/webapp/app/admin/logs/logs.component.html.ejs +51 -49
  47. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-cache/metrics-cache.component.html.ejs +16 -16
  48. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-datasource/metrics-datasource.component.html.ejs +32 -32
  49. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-endpoints-requests/metrics-endpoints-requests.component.html.ejs +4 -4
  50. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-garbagecollector/metrics-garbagecollector.component.html.ejs +18 -18
  51. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.html.ejs +12 -12
  52. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.ts.ejs +4 -4
  53. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-request/metrics-request.component.html.ejs +4 -4
  54. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-system/metrics-system.component.html.ejs +8 -8
  55. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/metrics.component.html.ejs +1 -1
  56. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.html.ejs +1 -1
  57. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.html.ejs +4 -4
  58. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +5 -5
  59. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/list/user-management.component.ts.ejs +1 -1
  60. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/update/user-management-update.component.html.ejs +11 -11
  61. package/generators/client/templates/angular/src/main/webapp/app/core/util/data-util.service.ts.ejs +1 -1
  62. package/generators/client/templates/angular/src/main/webapp/app/core/util/parse-links.service.ts.ejs +1 -1
  63. package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +4 -2
  64. package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.scss.ejs +0 -6
  65. package/generators/client/templates/angular/src/main/webapp/app/layouts/profiles/page-ribbon.component.scss.ejs +0 -6
  66. package/generators/client/templates/angular/src/main/webapp/app/login/login.component.html.ejs +3 -3
  67. package/generators/client/templates/angular/src/main/webapp/content/scss/_bootstrap-variables.scss.ejs +5 -5
  68. package/generators/client/templates/angular/src/main/webapp/content/scss/global.scss.ejs +29 -0
  69. package/generators/client/templates/angular/src/main/webapp/content/scss/vendor.scss.ejs +0 -4
  70. package/generators/client/templates/angular/webpack/webpack.custom.js.ejs +31 -1
  71. package/generators/client/templates/common/package.json +7 -6
  72. package/generators/client/templates/common/src/main/webapp/swagger-ui/index.html.ejs +1 -7
  73. package/generators/client/templates/common/webpack/webpack.microfrontend.js.jhi.ejs +2 -3
  74. package/generators/client/templates/react/.eslintrc.json.ejs +1 -1
  75. package/generators/client/templates/react/jest.conf.js.ejs +1 -1
  76. package/generators/client/templates/react/package.json +44 -45
  77. package/generators/client/templates/react/package.json.ejs +1 -0
  78. package/generators/client/templates/react/src/main/webapp/app/app.scss.ejs +1 -1
  79. package/generators/client/templates/react/src/main/webapp/app/config/store.ts.ejs +53 -6
  80. package/generators/client/templates/react/src/main/webapp/app/config/translation-middleware.ts.ejs +58 -0
  81. package/generators/client/templates/react/src/main/webapp/app/entities/menu.tsx.ejs +45 -0
  82. package/generators/client/templates/react/src/main/webapp/app/entities/reducers.ts.ejs +25 -0
  83. package/generators/client/templates/react/src/main/webapp/app/entities/routes.tsx.ejs +47 -0
  84. package/generators/client/templates/react/src/main/webapp/app/index.tsx.ejs +7 -7
  85. package/generators/client/templates/react/src/main/webapp/app/main.tsx.ejs +19 -0
  86. package/generators/client/templates/react/src/main/webapp/app/modules/administration/logs/logs.tsx.ejs +1 -1
  87. package/generators/client/templates/react/src/main/webapp/app/modules/administration/user-management/user-management.tsx.ejs +2 -1
  88. package/generators/client/templates/react/src/main/webapp/app/modules/login/login-modal.tsx.ejs +5 -1
  89. package/generators/client/templates/react/src/main/webapp/app/routes.tsx.ejs +24 -7
  90. package/generators/client/templates/react/src/main/webapp/app/shared/error/error-loading.tsx.ejs +15 -0
  91. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/entities.tsx.ejs +34 -6
  92. package/generators/client/templates/react/src/main/webapp/app/shared/reducers/index.ts.ejs +9 -2
  93. package/generators/client/templates/react/src/main/webapp/app/shared/reducers/locale.spec.ts.ejs +9 -3
  94. package/generators/client/templates/react/src/main/webapp/app/shared/reducers/locale.ts.ejs +21 -5
  95. package/generators/client/templates/react/src/main/webapp/app/typings.d.ts.ejs +15 -0
  96. package/generators/client/templates/react/src/main/webapp/microfrontends/entities-menu.tsx.ejs +3 -0
  97. package/generators/client/templates/react/src/main/webapp/microfrontends/entities-routes.tsx.ejs +3 -0
  98. package/generators/client/templates/react/tsconfig.json.ejs +3 -3
  99. package/generators/client/templates/react/tsconfig.test.json.ejs +9 -1
  100. package/generators/client/templates/react/webpack/webpack.common.js.ejs +6 -13
  101. package/generators/client/templates/react/webpack/webpack.dev.js.ejs +7 -8
  102. package/generators/client/templates/react/webpack/webpack.microfrontend.js.jhi.react.ejs +99 -0
  103. package/generators/client/templates/react/webpack/webpack.prod.js.ejs +31 -21
  104. package/generators/client/templates/vue/package.json +30 -31
  105. package/generators/client/templates/vue/package.json.ejs +1 -1
  106. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +4 -3
  107. package/generators/client/templates/vue/src/main/webapp/app/entities/user/user.service.ts.ejs +0 -0
  108. package/generators/client/templates/vue/src/main/webapp/app/main.ts.ejs +29 -1
  109. package/generators/client/templates/vue/src/main/webapp/app/shared/config/axios-interceptor.ts.ejs +2 -2
  110. package/generators/client/templates/vue/src/main/webapp/app/shared/config/config.ts.ejs +0 -4
  111. package/generators/client/templates/vue/src/main/webapp/app/shared/data/data-utils.service.ts.ejs +1 -1
  112. package/generators/client/templates/vue/src/test/javascript/jest.conf.js.ejs +2 -2
  113. package/generators/client/templates/vue/tsconfig.json.ejs +0 -3
  114. package/generators/client/templates/vue/webpack/webpack.common.js.ejs +6 -2
  115. package/generators/cloudfoundry/esm.mjs +1 -3
  116. package/generators/common/esm.mjs +2 -3
  117. package/generators/common/files.js +1 -2
  118. package/generators/common/index.js +6 -0
  119. package/generators/common/templates/.husky/{pre-commit → pre-commit.ejs} +4 -0
  120. package/generators/common/templates/README.md.jhi.ejs +3 -1
  121. package/generators/common/templates/package.json +4 -4
  122. package/generators/common/templates/sonar-project.properties.ejs +1 -1
  123. package/generators/cypress/esm.mjs +2 -3
  124. package/generators/cypress/files.js +2 -1
  125. package/generators/cypress/templates/src/test/javascript/cypress/integration/account/settings-page.spec.ts.ejs +18 -14
  126. package/generators/database-changelog/esm.mjs +1 -3
  127. package/generators/database-changelog/index.js +1 -1
  128. package/generators/database-changelog-liquibase/esm.mjs +2 -3
  129. package/generators/docker-compose/esm.mjs +1 -3
  130. package/generators/docker-compose/index.js +9 -5
  131. package/generators/entities/esm.mjs +1 -3
  132. package/generators/entities/index.js +2 -2
  133. package/generators/entities-client/esm.mjs +1 -3
  134. package/generators/entity/esm.mjs +1 -3
  135. package/generators/entity/index.js +39 -28
  136. package/generators/entity/prompts.js +4 -1
  137. package/generators/entity-client/esm.mjs +2 -3
  138. package/generators/entity-client/index.js +8 -0
  139. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/delete/entity-management-delete-dialog.component.html.ejs +1 -1
  140. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/detail/entity-management-detail.component.html.ejs +2 -2
  141. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.html.ejs +20 -21
  142. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.ts.ejs +1 -1
  143. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.html.ejs +14 -16
  144. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.ts.ejs +3 -3
  145. package/generators/entity-client/templates/common/src/test/javascript/cypress/integration/entity/entity.spec.ts.ejs +2 -1
  146. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-delete-dialog.tsx.ejs +3 -3
  147. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-detail.tsx.ejs +5 -4
  148. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-reducer.spec.ts.ejs +1 -1
  149. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-update.tsx.ejs +20 -19
  150. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity.reducer.ts.ejs +2 -2
  151. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity.tsx.ejs +21 -20
  152. package/generators/entity-client/templates/react/src/test/javascript/e2e/entities/entity-update-page-object.ts.ejs +1 -1
  153. package/generators/entity-client/templates/vue/src/test/javascript/e2e/entities/entity-update-page-object.ts.ejs +1 -1
  154. package/generators/entity-client/templates/vue/src/test/javascript/e2e/entities/entity.spec.ts.ejs +1 -1
  155. package/generators/entity-i18n/esm.mjs +2 -3
  156. package/generators/entity-i18n/templates/i18n/entity_fr.json.ejs +1 -1
  157. package/generators/entity-server/esm.mjs +2 -3
  158. package/generators/entity-server/files-couchbase.js +23 -2
  159. package/generators/entity-server/files.js +40 -6
  160. package/generators/entity-server/index.js +27 -2
  161. package/generators/entity-server/templates/couchbase/src/main/java/package/domain/Entity.java.jhi.spring_data_couchbase.ejs +11 -13
  162. package/generators/entity-server/templates/couchbase/src/main/java/package/repository/EntityRepository.java.ejs +30 -43
  163. package/generators/entity-server/templates/couchbase/src/main/resources/config/couchmove/changelog/entity.fts.ejs +5 -6
  164. package/generators/entity-server/templates/couchbase/src/main/resources/config/couchmove/changelog/entity.n1ql.ejs +5 -0
  165. package/generators/entity-server/templates/partials/it_patch_update.partial.java.ejs +2 -2
  166. package/generators/entity-server/templates/partials/save_template.ejs +1 -1
  167. package/generators/entity-server/templates/partials/update_template.ejs +77 -0
  168. package/generators/entity-server/templates/reactive/partials/save_template.ejs +1 -1
  169. package/generators/entity-server/templates/reactive/partials/update_template.ejs +41 -0
  170. package/generators/entity-server/templates/src/main/java/package/common/get_all_template.ejs +5 -5
  171. package/generators/entity-server/templates/src/main/java/package/common/get_template.ejs +1 -1
  172. package/generators/entity-server/templates/src/main/java/package/common/inject_template.ejs +17 -8
  173. package/generators/entity-server/templates/src/main/java/package/common/patch_template.ejs +5 -5
  174. package/generators/entity-server/templates/src/main/java/package/common/search_stream_template.ejs +1 -1
  175. package/generators/entity-server/templates/src/main/java/package/common/search_template.ejs +1 -1
  176. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.ejs +4 -3
  177. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.javax_lifecycle_events.ejs +31 -0
  178. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.spring_data_persistable.ejs +54 -0
  179. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.spring_data_reactive.ejs +1 -1
  180. package/generators/entity-server/templates/src/main/java/package/domain/EntityCallback.java.ejs +43 -0
  181. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository.java.ejs +36 -23
  182. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryInternalImpl_reactive.java.ejs +24 -28
  183. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryWithBagRelationships.java.ejs +37 -0
  184. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryWithBagRelationshipsImpl.java.ejs +91 -0
  185. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository_reactive.java.ejs +17 -25
  186. package/generators/entity-server/templates/src/main/java/package/repository/EntitySqlHelper_reactive.java.ejs +2 -2
  187. package/generators/entity-server/templates/src/main/java/package/repository/rowmapper/EntityRowMapper.java.ejs +3 -3
  188. package/generators/entity-server/templates/src/main/java/package/repository/search/EntitySearchRepository.java.ejs +12 -27
  189. package/generators/entity-server/templates/src/main/java/package/service/EntityService.java.ejs +10 -2
  190. package/generators/entity-server/templates/src/main/java/package/service/criteria/EntityCriteria.java.ejs +8 -6
  191. package/generators/entity-server/templates/src/main/java/package/service/impl/EntityServiceImpl.java.ejs +21 -5
  192. package/generators/entity-server/templates/src/main/java/package/service/mapper/EntityMapper.java.ejs +61 -90
  193. package/generators/entity-server/templates/src/main/java/package/web/rest/EntityResource.java.ejs +6 -4
  194. package/generators/entity-server/templates/src/test/java/package/web/rest/EntityResourceIT.java.ejs +33 -20
  195. package/generators/export-jdl/esm.mjs +1 -3
  196. package/generators/gae/esm.mjs +1 -3
  197. package/generators/generate-blueprint/constants.mjs +146 -0
  198. package/generators/generate-blueprint/esm.mjs +19 -0
  199. package/generators/generate-blueprint/files.mjs +81 -0
  200. package/generators/generate-blueprint/generator.mjs +363 -0
  201. package/generators/generate-blueprint/index.mjs +20 -0
  202. package/generators/generate-blueprint/templates/.eslintrc.json.ejs +41 -0
  203. package/generators/generate-blueprint/templates/.github/workflows/generator.yml.ejs +32 -0
  204. package/generators/generate-blueprint/templates/.mocharc.cjs.ejs +29 -0
  205. package/generators/{server/templates/couchbase/src/main/java/package/config/couchbase/package-info.java.ejs → generate-blueprint/templates/.prettierignore.jhi.blueprint.ejs} +4 -7
  206. package/generators/generate-blueprint/templates/README.md.ejs +75 -0
  207. package/generators/generate-blueprint/templates/cli/cli.mjs.ejs +35 -0
  208. package/generators/generate-blueprint/templates/cli/commands.cjs.ejs +25 -0
  209. package/generators/generate-blueprint/templates/generators/generator/generator.mjs.jhi.ejs +98 -0
  210. package/generators/generate-blueprint/templates/generators/generator/generator.spec.mjs.ejs +42 -0
  211. package/generators/generate-blueprint/templates/generators/generator/index.mjs.ejs +19 -0
  212. package/generators/generate-blueprint/templates/generators/generator/templates/template-file.ejs +0 -0
  213. package/generators/generate-blueprint/templates/test/utils.mjs.ejs +17 -0
  214. package/generators/generator-base-blueprint.js +29 -0
  215. package/generators/generator-base-docker.js +1 -0
  216. package/generators/generator-base-entities.cjs +368 -0
  217. package/generators/generator-base-private.js +1 -1
  218. package/generators/generator-base.js +157 -23
  219. package/generators/generator-constants.js +22 -20
  220. package/generators/generator-list.js +2 -0
  221. package/generators/generator-transforms.js +0 -1
  222. package/generators/gradle/constants.cjs +1 -1
  223. package/generators/gradle/esm.mjs +19 -0
  224. package/generators/heroku/esm.mjs +1 -3
  225. package/generators/info/esm.mjs +1 -3
  226. package/generators/init/esm.mjs +19 -0
  227. package/generators/init/files.cjs +9 -3
  228. package/generators/init/index.cjs +5 -0
  229. package/generators/init/templates/.gitignore.jhi.ejs +5 -0
  230. package/generators/init/templates/{.lintstagedrc.js.ejs → .lintstagedrc.cjs.ejs} +0 -0
  231. package/generators/java/esm.mjs +19 -0
  232. package/generators/java/index.cjs +58 -2
  233. package/generators/kubernetes/esm.mjs +1 -3
  234. package/generators/kubernetes-helm/esm.mjs +1 -3
  235. package/generators/kubernetes-knative/esm.mjs +1 -3
  236. package/generators/languages/esm.mjs +2 -3
  237. package/generators/languages/templates/src/test/resources/i18n/messages_fr.properties.ejs +4 -1
  238. package/generators/maven/esm.mjs +19 -0
  239. package/generators/maven/files.cjs +0 -1
  240. package/generators/maven/templates/.mvn/wrapper/maven-wrapper.jar +0 -0
  241. package/generators/maven/templates/.mvn/wrapper/maven-wrapper.properties +18 -2
  242. package/generators/maven/templates/mvnw +13 -7
  243. package/generators/maven/templates/mvnw.cmd +19 -13
  244. package/generators/maven/templates/pom.xml.jhi.ejs +1 -1
  245. package/generators/openapi-client/esm.mjs +1 -3
  246. package/generators/openapi-client/index.js +11 -4
  247. package/generators/openshift/esm.mjs +1 -3
  248. package/generators/page/esm.mjs +1 -3
  249. package/generators/project-name/esm.mjs +19 -0
  250. package/generators/server/cleanup.js +19 -3
  251. package/generators/server/esm.mjs +2 -2
  252. package/generators/server/files-couchbase.js +28 -31
  253. package/generators/server/files.js +115 -18
  254. package/generators/server/index.js +23 -17
  255. package/generators/server/needle-api/needle-server-gradle.js +38 -0
  256. package/generators/server/needle-api/needle-server-maven.js +1 -1
  257. package/generators/server/templates/.mvn/jvm.config +1 -0
  258. package/generators/server/templates/.mvn/wrapper/maven-wrapper.jar +0 -0
  259. package/generators/server/templates/.mvn/wrapper/maven-wrapper.properties +18 -2
  260. package/generators/server/templates/build.gradle.ejs +7 -5
  261. package/generators/server/templates/couchbase/src/main/java/package/repository/CouchbaseSearchRepository.java.ejs +91 -0
  262. package/generators/server/templates/couchbase/src/main/java/package/repository/JHipsterCouchbaseRepository.java.ejs +47 -45
  263. package/generators/server/templates/couchbase/src/main/java/package/repository/PersistentTokenRepository_couchbase.java.ejs +2 -2
  264. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/authority/ROLE_ADMIN.json.ejs +3 -0
  265. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/authority/ROLE_USER.json.ejs +3 -0
  266. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/{user__admin.json.ejs → user/admin.json.ejs} +2 -2
  267. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/{user__user.json.ejs → user/user.json.ejs} +2 -2
  268. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.2__create_indexes.n1ql.ejs +34 -0
  269. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0__create_collections.n1ql.ejs +8 -0
  270. package/generators/server/templates/couchbase/src/test/java/package/CouchbaseTestContainerExtension.java.ejs +4 -3
  271. package/generators/server/templates/couchbase/src/test/java/package/repository/{JHipsterCouchbaseRepositoryTest.java.ejs → CouchbaseSearchRepositoryTest.java.ejs} +2 -2
  272. package/generators/server/templates/devcontainer/Dockerfile.ejs +25 -0
  273. package/generators/server/templates/devcontainer/devcontainer.json.ejs +64 -0
  274. package/generators/server/templates/gradle/profile_prod.gradle.ejs +4 -0
  275. package/generators/server/templates/gradle/wrapper/gradle-wrapper.jar +0 -0
  276. package/generators/server/templates/gradle.properties.ejs +8 -8
  277. package/generators/server/templates/mvnw +13 -7
  278. package/generators/server/templates/mvnw.cmd +19 -13
  279. package/generators/server/templates/npmw +14 -5
  280. package/generators/server/templates/pom.xml.ejs +65 -58
  281. package/generators/server/templates/settings.gradle.ejs +6 -4
  282. package/generators/server/templates/src/main/docker/app.yml.ejs +4 -6
  283. package/generators/server/templates/src/main/docker/config/realm-config/jhipster-realm.json.ejs +2 -1
  284. package/generators/server/templates/src/main/docker/mysql.yml.ejs +1 -0
  285. package/generators/server/templates/src/main/docker/zipkin.yml.ejs +25 -0
  286. package/generators/server/templates/src/main/java/package/config/AsyncConfiguration.java.ejs +6 -0
  287. package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_couchbase.java.ejs +26 -16
  288. package/generators/{client/templates/react/src/main/webapp/app/entities/index.tsx.ejs → server/templates/src/main/java/package/config/KafkaSseConsumer.java.ejs} +8 -14
  289. package/generators/server/templates/src/main/java/package/config/KafkaSseProducer.java.ejs +30 -0
  290. package/generators/server/templates/src/main/java/package/config/LocaleConfiguration_reactive.java.ejs +1 -1
  291. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration.java.ejs +12 -10
  292. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration_reactive.java.ejs +2 -1
  293. package/generators/server/templates/src/main/java/package/domain/Authority.java.ejs +11 -0
  294. package/generators/server/templates/src/main/java/package/domain/PersistentToken.java.ejs +6 -6
  295. package/generators/server/templates/src/main/java/package/domain/User.java.ejs +9 -7
  296. package/generators/server/templates/src/main/java/package/repository/AuthorityRepository.java.ejs +1 -11
  297. package/generators/server/templates/src/main/java/package/repository/EntityManager.java.ejs +48 -38
  298. package/generators/server/templates/src/main/java/package/repository/UserRepository.java.ejs +48 -72
  299. package/generators/server/templates/src/main/java/package/security/jwt/JWTFilter.java.ejs +1 -1
  300. package/generators/server/templates/src/main/java/package/security/jwt/TokenProvider.java.ejs +1 -1
  301. package/generators/server/templates/src/main/java/package/security/oauth2/CustomClaimConverter.java.ejs +1 -1
  302. package/generators/server/templates/src/main/java/package/service/UserService.java.ejs +8 -6
  303. package/generators/server/templates/src/main/java/package/web/filter/OAuth2ReactiveRefreshTokensWebFilter.java.ejs +0 -1
  304. package/generators/server/templates/src/main/java/package/web/rest/AccountResource.java.ejs +1 -1
  305. package/generators/server/templates/src/main/java/package/web/rest/KafkaResource.java.ejs +60 -108
  306. package/generators/server/templates/src/main/java/package/web/rest/KafkaResource_reactive.java.ejs +74 -0
  307. package/generators/server/templates/src/main/java/package/web/rest/LogoutResource_reactive.java.ejs +1 -1
  308. package/generators/server/templates/src/main/java/package/web/rest/PublicUserResource.java.ejs +2 -2
  309. package/generators/server/templates/src/main/resources/config/application-dev.yml.ejs +8 -0
  310. package/generators/server/templates/src/main/resources/config/application-prod.yml.ejs +6 -0
  311. package/generators/server/templates/src/main/resources/config/application.yml.ejs +28 -22
  312. package/generators/server/templates/src/test/java/package/CassandraKeyspaceIT.java.ejs +3 -4
  313. package/generators/server/templates/src/test/java/package/IntegrationTest.java.ejs +12 -4
  314. package/generators/server/templates/src/test/java/package/TechnicalStructureTest.java.ejs +18 -15
  315. package/generators/server/templates/src/test/java/package/config/CassandraTestContainer.java.ejs +122 -0
  316. package/generators/server/templates/src/test/java/package/config/EmbeddedCassandra.java.ejs +11 -0
  317. package/generators/server/templates/src/test/java/package/config/EmbeddedKafka.java.ejs +11 -0
  318. package/generators/server/templates/src/test/java/package/config/EmbeddedMongo.java.ejs +11 -0
  319. package/generators/server/templates/src/test/java/package/config/JHipsterBlockHoundIntegration.java.ejs +2 -0
  320. package/generators/server/templates/src/test/java/package/config/KafkaTestContainer.java.ejs +38 -0
  321. package/generators/server/templates/src/test/java/package/config/MongoDbTestContainer.java.ejs +67 -0
  322. package/generators/server/templates/src/test/java/package/config/TestContainersSpringContextCustomizerFactory.java.ejs +114 -0
  323. package/generators/server/templates/src/test/java/package/cucumber/CucumberIT.java.ejs +3 -10
  324. package/generators/server/templates/src/test/java/package/cucumber/stepdefs/StepDefs.java.ejs +8 -0
  325. package/generators/server/templates/src/test/java/package/cucumber/stepdefs/UserStepDefs.java.ejs +17 -3
  326. package/generators/server/templates/src/test/java/package/security/DomainUserDetailsServiceIT.java.ejs +1 -4
  327. package/generators/server/templates/src/test/java/package/security/SecurityUtilsUnitTest_reactive.java.ejs +1 -1
  328. package/generators/server/templates/src/test/java/package/security/jwt/JWTFilterTest.java.ejs +5 -5
  329. package/generators/server/templates/src/test/java/package/security/oauth2/CustomClaimConverterIT.java.ejs +1 -1
  330. package/generators/server/templates/src/test/java/package/service/MailServiceIT.java.ejs +2 -4
  331. package/generators/server/templates/src/test/java/package/service/UserServiceIT.java.ejs +1 -4
  332. package/generators/server/templates/src/test/java/package/service/mapper/UserMapperTest.java.ejs +1 -1
  333. package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT.java.ejs +15 -8
  334. package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT_oauth2.java.ejs +1 -4
  335. package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT_skipUserManagement.java.ejs +1 -4
  336. package/generators/server/templates/src/test/java/package/web/rest/KafkaResourceIT.java.ejs +52 -123
  337. package/generators/server/templates/src/test/java/package/web/rest/KafkaResourceIT_reactive.java.ejs +99 -0
  338. package/generators/server/templates/src/test/java/package/web/rest/PublicUserResourceIT.java.ejs +7 -10
  339. package/generators/server/templates/src/test/java/package/web/rest/TestUtil.java.ejs +1 -6
  340. package/generators/server/templates/src/test/java/package/web/rest/UserJWTControllerIT.java.ejs +1 -4
  341. package/generators/server/templates/src/test/java/package/web/rest/UserResourceIT.java.ejs +42 -47
  342. package/generators/server/templates/src/test/java/package/web/rest/errors/ExceptionTranslatorIT.java.ejs +1 -4
  343. package/generators/server/templates/src/test/java/package/web/rest/errors/ExceptionTranslatorIT_reactive.java.ejs +2 -5
  344. package/generators/server/templates/src/test/resources/META-INF/spring.factories.ejs +1 -1
  345. package/generators/server/templates/src/test/resources/config/application.yml.ejs +21 -20
  346. package/generators/server/templates/src/test/resources/testcontainers.properties.ejs +1 -0
  347. package/generators/spring-boot/esm.mjs +19 -0
  348. package/generators/spring-controller/esm.mjs +1 -3
  349. package/generators/spring-service/esm.mjs +1 -3
  350. package/generators/upgrade/esm.mjs +1 -3
  351. package/generators/upgrade-config/esm.mjs +1 -3
  352. package/generators/workspaces/esm.mjs +1 -3
  353. package/generators/workspaces/index.js +2 -1
  354. package/lib/constants/logo.cjs +30 -0
  355. package/lib/constants/priorities.cjs +216 -2
  356. package/lib/constants/priorities.mjs +29 -1
  357. package/lib/index.mjs +6 -0
  358. package/lib/support/mixin.cjs +5 -1
  359. package/lib/support/shared-data.cjs +34 -1
  360. package/package.json +33 -29
  361. package/utils/entity.js +21 -2
  362. package/utils/faker.js +3 -3
  363. package/utils/field.js +69 -52
  364. package/utils/relationship.js +15 -4
  365. package/utils/user.js +109 -0
  366. package/generators/app/generator.spec.mjs +0 -47
  367. package/generators/aws/generator.spec.mjs +0 -47
  368. package/generators/azure-app-service/generator.spec.mjs +0 -47
  369. package/generators/azure-spring-cloud/generator.spec.mjs +0 -47
  370. package/generators/base/generator.spec.mjs +0 -44
  371. package/generators/bootstrap/generator.spec.mjs +0 -44
  372. package/generators/ci-cd/generator.spec.mjs +0 -47
  373. package/generators/client/__workflow/devserver-angular.json +0 -13
  374. package/generators/client/__workflow/devserver-react.json +0 -13
  375. package/generators/client/__workflow/devserver-vue.json +0 -13
  376. package/generators/client/generator.spec.mjs +0 -47
  377. package/generators/cloudfoundry/generator.spec.mjs +0 -47
  378. package/generators/common/generator.spec.mjs +0 -47
  379. package/generators/cypress/generator.spec.mjs +0 -47
  380. package/generators/database-changelog/generator.spec.mjs +0 -47
  381. package/generators/database-changelog-liquibase/generator.spec.mjs +0 -47
  382. package/generators/docker-compose/generator.spec.mjs +0 -44
  383. package/generators/entities/generator.spec.mjs +0 -47
  384. package/generators/entities-client/generator.spec.mjs +0 -47
  385. package/generators/entity/generator.spec.mjs +0 -47
  386. package/generators/entity-client/generator.spec.mjs +0 -47
  387. package/generators/entity-i18n/generator.spec.mjs +0 -47
  388. package/generators/entity-server/generator.spec.mjs +0 -47
  389. package/generators/entity-server/templates/src/main/java/package/repository/search/SortToFieldSortBuilderConverter.java.ejs +0 -24
  390. package/generators/export-jdl/generator.spec.mjs +0 -44
  391. package/generators/gae/generator.spec.mjs +0 -47
  392. package/generators/gradle/__snapshots__/generator.spec.cjs.snap +0 -59
  393. package/generators/gradle/generator.spec.cjs +0 -71
  394. package/generators/heroku/generator.spec.mjs +0 -47
  395. package/generators/info/generator.spec.mjs +0 -44
  396. package/generators/init/__snapshots__/generator.spec.cjs.snap +0 -65
  397. package/generators/init/generator.spec.cjs +0 -112
  398. package/generators/java/__snapshots__/generator.spec.cjs.snap +0 -118
  399. package/generators/java/generator.spec.cjs +0 -87
  400. package/generators/kubernetes/generator.spec.mjs +0 -44
  401. package/generators/kubernetes-helm/generator.spec.mjs +0 -44
  402. package/generators/kubernetes-knative/generator.spec.mjs +0 -44
  403. package/generators/languages/generator.spec.mjs +0 -47
  404. package/generators/maven/__snapshots__/generator.spec.cjs.snap +0 -53
  405. package/generators/maven/generator.spec.cjs +0 -78
  406. package/generators/maven/templates/.mvn/wrapper/MavenWrapperDownloader.java +0 -117
  407. package/generators/openapi-client/generator.spec.mjs +0 -47
  408. package/generators/openshift/generator.spec.mjs +0 -44
  409. package/generators/page/generator.spec.mjs +0 -47
  410. package/generators/project-name/generator.spec.cjs +0 -43
  411. package/generators/server/__snapshots__/generator.spec.mjs.snap +0 -1931
  412. package/generators/server/generator.spec.mjs +0 -52
  413. package/generators/server/templates/.mvn/wrapper/MavenWrapperDownloader.java +0 -117
  414. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomCouchbaseRepositoryFactory.java.ejs +0 -83
  415. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomCouchbaseRepositoryFactoryBean.java.ejs +0 -40
  416. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomCouchbaseRepositoryQuery.java.ejs +0 -44
  417. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomN1qlQueryCreator.java.ejs +0 -162
  418. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomN1qlRepositoryQueryExecutor.java.ejs +0 -104
  419. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/ROLE_ADMIN.json.ejs +0 -3
  420. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/ROLE_USER.json.ejs +0 -3
  421. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0__create_indexes.n1ql.ejs +0 -19
  422. package/generators/server/templates/src/main/java/package/config/KafkaProperties.java.ejs +0 -68
  423. package/generators/server/templates/src/test/java/package/AbstractCassandraTest.java.ejs +0 -125
  424. package/generators/server/templates/src/test/java/package/MongoDbTestContainerExtension.java.ejs +0 -37
  425. package/generators/server/templates/src/test/java/package/TestContainersSpringContextCustomizerFactory.java.ejs +0 -24
  426. package/generators/spring-boot/__snapshots__/generator.spec.cjs.snap +0 -80
  427. package/generators/spring-boot/generator.spec.cjs +0 -64
  428. package/generators/spring-controller/generator.spec.mjs +0 -47
  429. package/generators/spring-service/generator.spec.mjs +0 -47
  430. package/generators/upgrade/generator.spec.mjs +0 -44
  431. package/generators/upgrade-config/generator.spec.mjs +0 -44
  432. package/generators/workspaces/generator.spec.mjs +0 -47
@@ -0,0 +1,31 @@
1
+ <%#
2
+ Copyright 2013-2022 the original author or authors from the JHipster project.
3
+
4
+ This file is part of the JHipster project, see https://www.jhipster.tech/
5
+ for more information.
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ https://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
18
+ -%>
19
+ <%#
20
+ This is a fragment file, it will be merged into to root template if available.
21
+ EJS fragments will process % delimiter tags in template and & delimiter tags in the merge process.
22
+ -%>
23
+ <&_ if (fragment.classAdditionalFieldsMethodsSection) { -&>
24
+
25
+ @PostLoad
26
+ @PostPersist
27
+ public void updateEntityState() {
28
+ this.setIsPersisted();
29
+ }
30
+
31
+ <&_ } -&>
@@ -0,0 +1,54 @@
1
+ <%#
2
+ Copyright 2013-2022 the original author or authors from the JHipster project.
3
+
4
+ This file is part of the JHipster project, see https://www.jhipster.tech/
5
+ for more information.
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ https://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
18
+ -%>
19
+ <%#
20
+ This is a fragment file, it will be merged into to root template if available.
21
+ EJS fragments will process % delimiter tags in template and & delimiter tags in the merge process.
22
+ -%>
23
+ <&_ if (fragment.importSection) { -&>
24
+ import org.springframework.data.domain.Persistable;
25
+ <&_ } -&>
26
+
27
+ <&_ if (fragment.additionalInterfacesSection) { -&>
28
+ , Persistable<<%= primaryKey.type %>>
29
+ <&_ } -&>
30
+
31
+ <&_ if (fragment.classAdditionalFieldsSection) { -&>
32
+ @Transient
33
+ private boolean isPersisted;
34
+ <&_ } -&>
35
+
36
+ <&_ if (fragment.classAdditionalFieldsMethodsSection) { -&>
37
+ <%_ if (primaryKey.name !== 'id') { -%>
38
+ @Override
39
+ public <%= primaryKey.type %> getId() {
40
+ return this.<%= primaryKey.name %>;
41
+ }
42
+ <%_ } -%>
43
+
44
+ @Transient
45
+ @Override
46
+ public boolean isNew() {
47
+ return !this.isPersisted;
48
+ }
49
+
50
+ public <%= persistClass %> setIsPersisted() {
51
+ this.isPersisted = true;
52
+ return this;
53
+ }
54
+ <&_ } -&>
@@ -92,7 +92,7 @@ import org.springframework.data.relational.core.mapping.Table;
92
92
  <&_ if (fragment.classAdditionalRelationshipsSection) { -&>
93
93
  <%_ for (const relationship of relationships) { _%>
94
94
  <%_ if (relationship.ownerSide && !relationship.collection && !relationship.id) { _%>
95
- @Column("<%= relationship.columnName %>_id")
95
+ @Column("<%= relationship.joinColumnNames[0] %>")
96
96
  private <%= relationship.otherEntity.primaryKey.type %> <%= relationship.relationshipFieldName %>Id;
97
97
  <%_ } _%>
98
98
  <%_ } _%>
@@ -0,0 +1,43 @@
1
+ <%#
2
+ Copyright 2013-2022 the original author or authors from the JHipster project.
3
+
4
+ This file is part of the JHipster project, see https://www.jhipster.tech/
5
+ for more information.
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ https://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
18
+ -%>
19
+ package <%= entityAbsolutePackage %>.domain;
20
+
21
+ import org.reactivestreams.Publisher;
22
+ import org.springframework.data.r2dbc.mapping.OutboundRow;
23
+ import org.springframework.data.r2dbc.mapping.event.AfterConvertCallback;
24
+ import org.springframework.data.r2dbc.mapping.event.AfterSaveCallback;
25
+ import org.springframework.data.relational.core.sql.SqlIdentifier;
26
+ import org.springframework.stereotype.Component;
27
+
28
+ import reactor.core.publisher.Mono;
29
+
30
+ @Component
31
+ public class <%= persistClass %>Callback implements AfterSaveCallback<<%= persistClass %>>, AfterConvertCallback<<%= persistClass %>> {
32
+
33
+ @Override
34
+ public Publisher<<%= persistClass %>> onAfterConvert(<%= persistClass %> entity, SqlIdentifier table) {
35
+ return Mono.just(entity.setIsPersisted());
36
+ }
37
+
38
+ @Override
39
+ public Publisher<<%= persistClass %>> onAfterSave(<%= persistClass %> entity, OutboundRow outboundRow,
40
+ SqlIdentifier table) {
41
+ return Mono.just(entity.setIsPersisted());
42
+ }
43
+ }
@@ -20,13 +20,13 @@ package <%= entityAbsolutePackage %>.repository;
20
20
 
21
21
  import <%= entityAbsolutePackage %>.domain.<%= persistClass %>;
22
22
 
23
- <%_ if (relationshipsContainEagerLoad) { _%>
23
+ <%_ if (implementsEagerLoadApis) { _%>
24
24
  import org.springframework.data.domain.Page;
25
25
  import org.springframework.data.domain.Pageable;
26
26
  <%_ } _%>
27
27
  <%_ if (databaseTypeSql) { _%>
28
28
  import org.springframework.data.jpa.repository.*;
29
- <%_ if (relationshipsContainEagerLoad) { _%>
29
+ <%_ if (implementsEagerLoadApis) { _%>
30
30
  import org.springframework.data.repository.query.Param;
31
31
  <%_ } _%>
32
32
  <%_ } _%>
@@ -41,19 +41,11 @@ import org.springframework.data.neo4j.repository.Neo4jRepository;
41
41
  import org.springframework.data.cassandra.repository.CassandraRepository;
42
42
  <%_ } _%>
43
43
  import org.springframework.stereotype.Repository;
44
- <%_
45
- if (databaseTypeSql || databaseTypeMongodb) {
46
- let importList = fieldsContainOwnerManyToMany;
47
- for (r of relationships) {
48
- if (r.relationshipManyToOne && r.otherEntityUser) {
49
- importList = true;
50
- }
51
- }
52
- _%>
53
- <%_ if (importList) { _%>
44
+ <%_ if (databaseTypeSql || databaseTypeMongodb) { _%>
45
+ <%_ if (implementsEagerLoadApis || relationships.some(r => r.relationshipManyToOne && r.otherEntityUser)) { _%>
54
46
  import java.util.List;
55
47
  <%_ } _%>
56
- <%_ if (relationshipsContainEagerLoad) { _%>
48
+ <%_ if (implementsEagerLoadApis) { _%>
57
49
  import java.util.Optional;
58
50
  <%_ } _%>
59
51
  <%_ } _%>
@@ -65,11 +57,11 @@ import java.util.UUID;
65
57
  /**
66
58
  * Spring Data <%= officialDatabaseType %> repository for the <%= persistClass %> entity.
67
59
  */
68
- <%_ if (!relationshipsContainEagerLoad) { _%>
60
+ <%_ if (!implementsEagerLoadApis) { _%>
69
61
  @SuppressWarnings("unused")
70
62
  <%_ } _%>
71
63
  @Repository
72
- public interface <%= entityClass %>Repository extends <% if (databaseTypeSql) { %>JpaRepository<% } %><% if (databaseTypeMongodb) { %>MongoRepository<% } %><% if (databaseTypeNeo4j) { %>Neo4jRepository<% } %><% if (databaseTypeCassandra) { %>CassandraRepository<% } %><<%= persistClass %>, <%= primaryKey.type %>><% if (jpaMetamodelFiltering) { %>, JpaSpecificationExecutor<<%= persistClass %>><% } %> {
64
+ public interface <%= entityClass %>Repository extends <% if (containsBagRelationships && databaseTypeSql) { %><%= entityClass %>RepositoryWithBagRelationships, <% } %><% if (databaseTypeSql) { %>JpaRepository<% } %><% if (databaseTypeMongodb) { %>MongoRepository<% } %><% if (databaseTypeNeo4j) { %>Neo4jRepository<% } %><% if (databaseTypeCassandra) { %>CassandraRepository<% } %><<%= persistClass %>, <%= primaryKey.type %>><% if (jpaMetamodelFiltering) { %>, JpaSpecificationExecutor<<%= persistClass %>><% } %> {
73
65
  <%_ for (const relationship of relationships) { _%>
74
66
  <%_ if (relationship.relationshipManyToOne && relationship.otherEntityUser && databaseTypeSql) { _%>
75
67
 
@@ -77,28 +69,49 @@ public interface <%= entityClass %>Repository extends <% if (databaseTypeSql) {
77
69
  List<<%= persistClass %>> findBy<%= relationship.relationshipNameCapitalized %>IsCurrentUser();
78
70
  <%_ } _%>
79
71
  <%_ } _%>
80
- <%_ if (relationshipsContainEagerLoad) { _%>
72
+ <%_ if (implementsEagerLoadApis) { _%>
81
73
  <%_ if (databaseTypeSql) { _%>
82
74
 
75
+ <%_ const containsToOneEagerRelationship = relationships.some(relationship => relationship.relationshipEagerLoad && !relationship.bagRelationship); _%>
76
+ default Optional<<%= persistClass %>> findOneWithEagerRelationships(<%= primaryKey.type %> <%= primaryKey.name %>) {
77
+ return <% if (containsBagRelationships) { %>this.fetchBagRelationships(<% } %>
78
+ this.<% if (containsToOneEagerRelationship) { %>findOneWithToOneRelationships<% } else { %>findById<% } %>(<%= primaryKey.name %>)
79
+ <% if (containsBagRelationships) { %>)<% } %>;
80
+ }
81
+
82
+ default List<<%= persistClass %>> findAllWithEagerRelationships() {
83
+ return <% if (containsBagRelationships) { %>this.fetchBagRelationships(<% } %>
84
+ this.<% if (containsToOneEagerRelationship) { %>findAllWithToOneRelationships<% } else { %>findAll<% } %>()
85
+ <% if (containsBagRelationships) { %>)<% } %>;
86
+ }
87
+
88
+ default Page<<%= persistClass %>> findAllWithEagerRelationships(Pageable pageable) {
89
+ return <% if (containsBagRelationships) { %>this.fetchBagRelationships(<% } %>
90
+ this.<% if (containsToOneEagerRelationship) { %>findAllWithToOneRelationships<% } else { %>findAll<% } %>(pageable)
91
+ <% if (containsBagRelationships) { %>)<% } %>;
92
+ }
93
+ <%_ if (containsToOneEagerRelationship) { _%>
94
+
83
95
  @Query(value = "select distinct <%= entityInstanceDbSafe %> from <%= persistClass %> <%= entityInstanceDbSafe %><%
84
96
  for (const relationship of relationships) {
85
- if (relationship.relationshipEagerLoad) { %> left join fetch <%= entityInstanceDbSafe %>.<%= relationship.reference.name %><% }
97
+ if (relationship.relationshipEagerLoad && !relationship.bagRelationship) { %> left join fetch <%= entityInstanceDbSafe %>.<%= relationship.reference.name %><% }
86
98
  } %>",
87
99
  countQuery = "select count(distinct <%= entityInstanceDbSafe %>) from <%= persistClass %> <%= entityInstanceDbSafe %>")
88
- Page<<%= persistClass %>> findAllWithEagerRelationships(Pageable pageable);
100
+ Page<<%= persistClass %>> findAllWithToOneRelationships(Pageable pageable);
89
101
 
90
102
  @Query("select distinct <%= entityInstanceDbSafe %> from <%= persistClass %> <%= entityInstanceDbSafe %><%
91
103
  for (const relationship of relationships) {
92
- if (relationship.relationshipEagerLoad) { %> left join fetch <%= entityInstanceDbSafe %>.<%= relationship.reference.name %><% }
104
+ if (relationship.relationshipEagerLoad && !relationship.bagRelationship) { %> left join fetch <%= entityInstanceDbSafe %>.<%= relationship.reference.name %><% }
93
105
  } %>")
94
- List<<%= persistClass %>> findAllWithEagerRelationships();
106
+ List<<%= persistClass %>> findAllWithToOneRelationships();
95
107
 
96
108
  @Query("select <%= entityInstanceDbSafe %> from <%= persistClass %> <%= entityInstanceDbSafe %><%
97
109
  for (const relationship of relationships) {
98
- if (relationship.relationshipEagerLoad) { %> left join fetch <%= entityInstanceDbSafe %>.<%= relationship.reference.name %><% }
110
+ if (relationship.relationshipEagerLoad && !relationship.bagRelationship) { %> left join fetch <%= entityInstanceDbSafe %>.<%= relationship.reference.name %><% }
99
111
  } %> where <%= entityInstanceDbSafe %>.id =:id")
100
- Optional<<%= persistClass %>> findOneWithEagerRelationships(@Param("id") <%= primaryKey.type %> id);
101
- <%_ } else if (databaseTypeMongodb) { _%>
112
+ Optional<<%= persistClass %>> findOneWithToOneRelationships(@Param("id") <%= primaryKey.type %> id);
113
+ <%_ } _%>
114
+ <%_ } else if (databaseTypeMongodb) { _%>
102
115
 
103
116
  @Query("{}")
104
117
  Page<<%= persistClass %>> findAllWithEagerRelationships(Pageable pageable);
@@ -38,19 +38,21 @@ import java.util.Map;
38
38
  import java.util.Map.Entry;
39
39
  import java.util.Optional;
40
40
  import org.springframework.data.domain.Pageable;
41
- <%_ if (databaseTypeSql) { _%>
42
41
  import io.r2dbc.spi.Row;
43
42
  import io.r2dbc.spi.RowMetadata;
44
43
  import static org.springframework.data.relational.core.query.Criteria.where;
45
- <%_ if (fieldsContainOwnerManyToMany) { _%>
44
+ <%_ if (containsBagRelationships) { _%>
46
45
  import static org.springframework.data.relational.core.query.Query.query;
47
- <%_ } _%>
46
+ <%_ } _%>
48
47
  import org.springframework.data.r2dbc.convert.R2dbcConverter;
49
48
  import org.springframework.data.r2dbc.core.R2dbcEntityOperations;
50
49
  import org.springframework.data.r2dbc.core.R2dbcEntityTemplate;
51
50
  import org.springframework.data.r2dbc.repository.support.SimpleR2dbcRepository;
52
51
  import org.springframework.data.relational.core.query.Criteria;
53
52
  import org.springframework.data.relational.core.sql.Column;
53
+ import org.springframework.data.relational.core.sql.Comparison;
54
+ import org.springframework.data.relational.core.sql.Condition;
55
+ import org.springframework.data.relational.core.sql.Conditions;
54
56
  import org.springframework.data.relational.core.sql.Expression;
55
57
  import org.springframework.data.relational.core.sql.Select;
56
58
  import org.springframework.data.relational.core.sql.SelectBuilder.SelectFromAndJoin<% if (reactiveEagerRelations.length > 0) { %>Condition<% } %>;
@@ -58,7 +60,6 @@ import org.springframework.data.relational.core.sql.Table;
58
60
  import org.springframework.data.relational.repository.support.MappingRelationalEntityInformation;
59
61
  import org.springframework.r2dbc.core.DatabaseClient;
60
62
  import org.springframework.r2dbc.core.RowsFetchSpec;
61
- <%_ } _%>
62
63
 
63
64
  import <%= entityAbsolutePackage %>.domain.<%= persistClass %>;
64
65
  <% relationships.forEach(function(rel) {
@@ -105,14 +106,14 @@ class <%= entityClass %>RepositoryInternalImpl extends SimpleR2dbcRepository<<%=
105
106
  <%_ relationships.forEach(function(rel) {
106
107
  if (rel.shouldWriteJoinTable) {
107
108
  _%>
108
- private final static EntityManager.LinkTable <%= rel.relationshipName %>Link = new EntityManager.LinkTable("<%= rel.joinTable.name %>", "<%= getColumnName(name) %>_id", "<%= getColumnName(rel.relationshipName) %>_id");
109
+ private final static EntityManager.LinkTable <%= rel.relationshipName %>Link = new EntityManager.LinkTable("<%= rel.joinTable.name %>", "<%= entity.entityTableName %>_<%= getColumnName(entity.primaryKey.name) %>", "<%= rel.joinColumnNames[0] %>");
109
110
  <%_ }
110
111
  }); _%>
111
112
 
112
113
  public <%= entityClass %>RepositoryInternalImpl(R2dbcEntityTemplate template, EntityManager entityManager<%_
113
114
  reactiveUniqueEntityTypes.forEach(function(element) { _%>, <%= element %>RowMapper <%= element.toLowerCase() %>Mapper<%_ }); _%>, R2dbcEntityOperations entityOperations,
114
115
  R2dbcConverter converter) {
115
- super(new MappingRelationalEntityInformation(converter.getMappingContext().getRequiredPersistentEntity(<%= entityClass %>.class)), entityOperations, converter);
116
+ super(new MappingRelationalEntityInformation(converter.getMappingContext().getRequiredPersistentEntity(<%= persistClass %>.class)), entityOperations, converter);
116
117
  this.db = template.getDatabaseClient();
117
118
  this.r2dbcEntityTemplate = template;
118
119
  this.entityManager = entityManager;
@@ -123,40 +124,35 @@ _%>
123
124
 
124
125
  @Override
125
126
  public Flux<<%= persistClass %>> findAllBy(Pageable pageable) {
126
- return findAllBy(pageable, null);
127
- }
128
-
129
- @Override
130
- public Flux<<%= persistClass %>> findAllBy(Pageable pageable, Criteria criteria) {
131
- return createQuery(pageable, criteria).all();
127
+ return createQuery(pageable, null).all();
132
128
  }
133
129
 
134
- RowsFetchSpec<<%= persistClass %>> createQuery(Pageable pageable, Criteria criteria) {
135
- List<Expression> columns = <%= persistClass %>SqlHelper.getColumns(entityTable, EntityManager.ENTITY_ALIAS);
130
+ RowsFetchSpec<<%= persistClass %>> createQuery(Pageable pageable, Condition whereClause) {
131
+ List<Expression> columns = <%= entityClass %>SqlHelper.getColumns(entityTable, EntityManager.ENTITY_ALIAS);
136
132
  <%_ reactiveEagerRelations.forEach(function(rel) { _%>
137
133
  columns.addAll(<%= rel.otherEntityNameCapitalized %>SqlHelper.getColumns(<%= rel.relationshipName %>Table, "<%= rel.relationshipName %>"));
138
134
  <%_ }); _%>
139
135
  SelectFromAndJoin<% if (reactiveEagerRelations.length > 0) { %>Condition<% } %> selectFrom = Select.builder().select(columns).from(entityTable)
140
- <%_ reactiveEagerRelations.forEach(function(rel) {
141
- const colName = _getJoinColumnName(rel); _%>
142
- .leftOuterJoin(<%= rel.relationshipName %>Table).on(Column.create("<%= colName %>", entityTable)).equals(Column.create("id", <%= rel.relationshipName %>Table ))
136
+ <%_ reactiveEagerRelations.forEach(function(rel) { _%>
137
+ .leftOuterJoin(<%= rel.relationshipName %>Table).on(Column.create("<%= rel.joinColumnNames[0] %>", entityTable)).equals(Column.create("<%= rel.otherEntity.primaryKey.fields[0].columnName %>", <%= rel.relationshipName %>Table ))
143
138
  <%_ }); _%>;
144
-
145
- String select = entityManager.createSelect(selectFrom, <%= persistClass %>.class, pageable, criteria);
139
+ // we do not support Criteria here for now as of https://github.com/jhipster/generator-jhipster/issues/18269
140
+ String select = entityManager.createSelect(selectFrom, <%= persistClass %>.class, pageable, whereClause);
146
141
  return db.sql(select).map(this::process);
147
142
  }
148
143
 
149
144
  @Override
150
145
  public Flux<<%= persistClass %>> findAll() {
151
- return findAllBy(null, null);
146
+ return findAllBy(null);
152
147
  }
153
148
 
154
149
  @Override
155
150
  public Mono<<%= persistClass %>> findById(<%= primaryKey.type %> id) {
156
- return createQuery(null, where(EntityManager.ENTITY_ALIAS + ".<%= primaryKey.name %>").is(id)).one();
151
+ Comparison whereClause = Conditions.isEqual(entityTable.column("<%= primaryKey.fields[0].columnName %>"), Conditions.just(id.toString()));
152
+ return createQuery(null, whereClause).one();
157
153
  }
158
154
 
159
- <%_ if (fieldsContainOwnerManyToMany) { _%>
155
+ <%_ if (implementsEagerLoadApis) { _%>
160
156
 
161
157
  @Override
162
158
  public Mono<<%= persistClass %>> findOneWithEagerRelationships(<%= primaryKey.type %> id) {
@@ -190,30 +186,30 @@ _%>
190
186
  return entityManager.insert(entity);
191
187
  }
192
188
  <%_ } _%>
193
- return super.save(entity)<% if (fieldsContainOwnerManyToMany) { %>.flatMap((S e) -> updateRelations(e))<% } %>;
189
+ return super.save(entity)<% if (containsBagRelationships) { %>.flatMap((S e) -> updateRelations(e))<% } %>;
194
190
  }
195
191
 
196
- <%_ if (fieldsContainOwnerManyToMany) { _%>
192
+ <%_ if (containsBagRelationships) { _%>
197
193
  protected <S extends <%= persistClass %>> Mono<S> updateRelations(S entity) {
198
194
  <%_ relationships.filter(function(rel) {
199
195
  return (rel.relationshipManyToMany && rel.ownerSide);
200
196
  }).forEach(function(rel, idx) { _%>
201
197
  <%_ if (idx === 0) { _%>
202
- Mono<Void> result = entityManager.updateLinkTable(<%= rel.relationshipName %>Link, entity.get<%= primaryKey.nameCapitalized %>(), entity.get<%= rel.relationshipNameCapitalizedPlural %>().stream().map(<%= asEntity(rel.otherEntityNameCapitalized) %>::getId)).then();
198
+ Mono<Void> result = entityManager.updateLinkTable(<%= rel.relationshipName %>Link, entity.get<%= primaryKey.nameCapitalized %>(), entity.get<%= rel.relationshipNameCapitalizedPlural %>().stream().map(<%= asEntity(rel.otherEntityNameCapitalized) %>::get<%= rel.otherEntity.primaryKey.nameCapitalized %>)).then();
203
199
  <%_ } else { _%>
204
- result = result.and(entityManager.updateLinkTable(<%= rel.relationshipName %>Link, entity.get<%= primaryKey.nameCapitalized %>(), entity.get<%= rel.relationshipNameCapitalizedPlural %>().stream().map(<%= asEntity(rel.otherEntityNameCapitalized) %>::getId)));
200
+ result = result.and(entityManager.updateLinkTable(<%= rel.relationshipName %>Link, entity.get<%= primaryKey.nameCapitalized %>(), entity.get<%= rel.relationshipNameCapitalizedPlural %>().stream().map(<%= asEntity(rel.otherEntityNameCapitalized) %>::get<%= rel.otherEntity.primaryKey.nameCapitalized %>)));
205
201
  <%_ } _%>
206
202
  <%_ }); _%>
207
203
  return result.thenReturn(entity);
208
204
  }
209
205
 
210
206
  @Override
211
- public Mono<Void> deleteById(Long entityId) {
207
+ public Mono<Void> deleteById(<%= primaryKey.type %> entityId) {
212
208
  return deleteRelations(entityId)
213
209
  .then(super.deleteById(entityId));
214
210
  }
215
211
 
216
- protected Mono<Void> deleteRelations(Long entityId) {
212
+ protected Mono<Void> deleteRelations(<%= primaryKey.type %> entityId) {
217
213
  <%_ relationships.filter(function(rel) {
218
214
  return (rel.relationshipManyToMany && rel.ownerSide);
219
215
  }).forEach(function(rel, idx) { _%>
@@ -0,0 +1,37 @@
1
+ <%#
2
+ Copyright 2013-2021 the original author or authors from the JHipster project.
3
+
4
+ This file is part of the JHipster project, see https://www.jhipster.tech/
5
+ for more information.
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ https://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
18
+ -%>
19
+ package <%= packageName %>.repository;
20
+
21
+ import java.util.List;
22
+ import java.util.Optional;
23
+ <%_ if (fieldsContainUUID) { _%>
24
+ import java.util.UUID;
25
+ <%_ } _%>
26
+
27
+ import org.springframework.data.domain.Page;
28
+
29
+ import <%= packageName %>.domain.<%= persistClass %>;
30
+
31
+ public interface <%= entityClass %>RepositoryWithBagRelationships {
32
+ Optional<<%= persistClass %>> fetchBagRelationships(Optional<<%= persistClass %>> <%= entityInstance %>);
33
+
34
+ List<<%= persistClass %>> fetchBagRelationships(List<<%= persistClass %>> <%= entityInstancePlural %>);
35
+
36
+ Page<<%= persistClass %>> fetchBagRelationships(Page<<%= persistClass %>> <%= entityInstancePlural %>);
37
+ }
@@ -0,0 +1,91 @@
1
+ <%#
2
+ Copyright 2013-2021 the original author or authors from the JHipster project.
3
+
4
+ This file is part of the JHipster project, see https://www.jhipster.tech/
5
+ for more information.
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ https://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
18
+ -%>
19
+ package <%= packageName %>.repository;
20
+
21
+ import java.util.Collections;
22
+ import java.util.List;
23
+ import java.util.Optional;
24
+ <%_ if (fieldsContainUUID) { _%>
25
+ import java.util.UUID;
26
+ <%_ } _%>
27
+
28
+ import javax.persistence.EntityManager;
29
+ import javax.persistence.PersistenceContext;
30
+
31
+ import org.hibernate.annotations.QueryHints;
32
+ import org.springframework.data.domain.Page;
33
+ import org.springframework.data.domain.PageImpl;
34
+
35
+ import <%= packageName %>.domain.<%= persistClass %>;
36
+
37
+ /**
38
+ * Utility repository to load bag relationships based on https://vladmihalcea.com/hibernate-multiplebagfetchexception/
39
+ */
40
+ public class <%= entityClass %>RepositoryWithBagRelationshipsImpl implements <%= entityClass %>RepositoryWithBagRelationships {
41
+ @PersistenceContext
42
+ private EntityManager entityManager;
43
+
44
+ @Override
45
+ public Optional<<%= persistClass %>> fetchBagRelationships(Optional<<%= persistClass %>> <%= entityInstance %>) {
46
+ return <%= entityInstance %>
47
+ <%_ for (const relationship of relationships.filter(relationship => relationship.bagRelationship)) { _%>
48
+ .map(this::fetch<%= relationship.relationshipNameCapitalizedPlural %>)
49
+ <%_ } _%>
50
+ ;
51
+ }
52
+
53
+ @Override
54
+ public Page<<%= persistClass %>> fetchBagRelationships(Page<<%= persistClass %>> <%= entityInstancePlural %>) {
55
+ return new PageImpl<>(fetchBagRelationships(<%= entityInstancePlural %>.getContent()), <%= entityInstancePlural %>.getPageable(), <%= entityInstancePlural %>.getTotalElements());
56
+ }
57
+
58
+ @Override
59
+ public List<<%= persistClass %>> fetchBagRelationships(List<<%= persistClass %>> <%= entityInstancePlural %>) {
60
+ return Optional
61
+ .of(<%= entityInstancePlural %>)
62
+ <%_ for (const relationship of relationships.filter(relationship => relationship.bagRelationship)) { _%>
63
+ .map(this::fetch<%= relationship.relationshipNameCapitalizedPlural %>)
64
+ <%_ } _%>
65
+ .orElse(Collections.emptyList());
66
+ }
67
+ <%_ for (const relationship of relationships.filter(relationship => relationship.bagRelationship)) { _%>
68
+
69
+ <%= persistClass %> fetch<%= relationship.relationshipNameCapitalizedPlural %>(<%= persistClass %> result) {
70
+ return entityManager
71
+ .createQuery(
72
+ "select <%= entityInstance %> from <%= persistClass %> <%= entityInstance %> left join fetch <%= entityInstance %>.<%= relationship.relationshipFieldNamePlural %> where <%= entityInstance %> is :<%= entityInstance %>",
73
+ <%= persistClass %>.class
74
+ )
75
+ .setParameter("<%= entityInstance %>", result)
76
+ .setHint(QueryHints.PASS_DISTINCT_THROUGH, false)
77
+ .getSingleResult();
78
+ }
79
+
80
+ List<<%= persistClass %>> fetch<%= relationship.relationshipNameCapitalizedPlural %>(List<<%= persistClass %>> <%= entityInstancePlural %>) {
81
+ return entityManager
82
+ .createQuery(
83
+ "select distinct <%= entityInstance %> from <%= persistClass %> <%= entityInstance %> left join fetch <%= entityInstance %>.<%= relationship.relationshipFieldNamePlural %> where <%= entityInstance %> in :<%= entityInstancePlural %>",
84
+ <%= persistClass %>.class
85
+ )
86
+ .setParameter("<%= entityInstancePlural %>", <%= entityInstancePlural %>)
87
+ .setHint(QueryHints.PASS_DISTINCT_THROUGH, false)
88
+ .getResultList();
89
+ }
90
+ <%_ } _%>
91
+ }
@@ -22,15 +22,11 @@ import <%= entityAbsolutePackage %>.domain.<%= persistClass %>;
22
22
  <%_ if (databaseTypeCassandra) { _%>
23
23
  import org.springframework.data.cassandra.repository.ReactiveCassandraRepository;
24
24
  <%_ } _%>
25
- <%_ if (databaseTypeCouchbase) { _%>
26
- import org.springframework.data.couchbase.core.query.Query;
27
- import org.springframework.data.couchbase.repository.ReactiveCouchbaseSortingRepository;
28
- <%_ } _%>
29
25
  <%_ if (databaseTypeNeo4j) { _%>
30
26
  import org.springframework.data.neo4j.repository.ReactiveNeo4jRepository;
31
27
  import org.springframework.data.neo4j.repository.query.Query;
32
28
  <%_ } _%>
33
- <%_ if (!paginationNo || relationshipsContainEagerLoad || databaseTypeSql) { _%>
29
+ <%_ if (!paginationNo || implementsEagerLoadApis || databaseTypeSql) { _%>
34
30
  import org.springframework.data.domain.Pageable;
35
31
  <%_ } _%>
36
32
  <%_ if (databaseTypeSql) { _%>
@@ -39,16 +35,16 @@ import org.springframework.data.repository.reactive.ReactiveCrudRepository;
39
35
  import org.springframework.data.relational.core.query.Criteria;
40
36
  <%_ } _%>
41
37
  <%_ if (databaseTypeMongodb) { _%>
42
- <%_ if (relationshipsContainEagerLoad) { _%>
38
+ <%_ if (implementsEagerLoadApis) { _%>
43
39
  import org.springframework.data.mongodb.repository.Query;
44
40
  <%_ } _%>
45
41
  import org.springframework.data.mongodb.repository.ReactiveMongoRepository;
46
42
  <%_ } _%>
47
43
  import org.springframework.stereotype.Repository;
48
- <%_ if (databaseTypeCouchbase || databaseTypeSql || !paginationNo || relationshipsContainEagerLoad) { _%>
44
+ <%_ if (databaseTypeSql || !paginationNo || implementsEagerLoadApis) { _%>
49
45
  import reactor.core.publisher.Flux;
50
46
  <%_ } _%>
51
- <%_ if (relationshipsContainEagerLoad || databaseTypeSql) { _%>
47
+ <%_ if (implementsEagerLoadApis || databaseTypeSql) { _%>
52
48
  import reactor.core.publisher.Mono;
53
49
  <%_ } _%>
54
50
  <%_ if (primaryKey.typeUUID) { _%>
@@ -61,13 +57,13 @@ import java.util.UUID;
61
57
  */
62
58
  @SuppressWarnings("unused")
63
59
  @Repository
64
- public interface <%= entityClass %>Repository extends <% if (databaseTypeSql) { %>ReactiveCrud<% } if (databaseTypeMongodb) { %>ReactiveMongo<% } if (databaseTypeCouchbase) { %>ReactiveN1qlCouchbase<% } if (databaseTypeNeo4j) { %>ReactiveNeo4j<% } if (databaseTypeCassandra) { %>ReactiveCassandra<% } %>Repository<<%= persistClass %>, <%= primaryKey.type %>><% if (databaseTypeSql) { %>, <%= entityClass %>RepositoryInternal<% } %> {
60
+ public interface <%= entityClass %>Repository extends <% if (databaseTypeSql) { %>ReactiveCrud<% } if (databaseTypeMongodb) { %>ReactiveMongo<% } if (databaseTypeNeo4j) { %>ReactiveNeo4j<% } if (databaseTypeCassandra) { %>ReactiveCassandra<% } %>Repository<<%= persistClass %>, <%= primaryKey.type %>><% if (databaseTypeSql) { %>, <%= entityClass %>RepositoryInternal<% } %> {
65
61
 
66
62
  <%_ if (!paginationNo) { _%>
67
63
  Flux<<%= persistClass %>> findAllBy(Pageable pageable);
68
64
  <%_ } _%>
69
- <%_ if (relationshipsContainEagerLoad) { _%>
70
- <%_ if (databaseTypeCouchbase || databaseTypeMongodb) { _%>
65
+ <%_ if (implementsEagerLoadApis) { _%>
66
+ <%_ if (databaseTypeMongodb) { _%>
71
67
 
72
68
  @Query("<%= (databaseTypeMongodb) ? '{}' : '#{#n1ql.selectEntity} WHERE #{#n1ql.filter}' %>")
73
69
  Flux<<%= persistClass %>> findAllWithEagerRelationships(Pageable pageable);
@@ -90,7 +86,7 @@ public interface <%= entityClass %>Repository extends <% if (databaseTypeSql) {
90
86
  <%_ } _%>
91
87
  <%_ } _%>
92
88
  <%_ if (databaseTypeSql) { _%>
93
- <%_ if (fieldsContainOwnerManyToMany) { _%>
89
+ <%_ if (implementsEagerLoadApis) { _%>
94
90
 
95
91
  @Override
96
92
  Mono<<%= persistClass %>> findOneWithEagerRelationships(<%= primaryKey.type %> id);
@@ -108,21 +104,21 @@ public interface <%= entityClass %>Repository extends <% if (databaseTypeSql) {
108
104
  let ownerSide = relationship.ownerSide; _%>
109
105
  <%_ if (relationship.relationshipManyToOne || (relationship.relationshipOneToOne && ownerSide)) { _%>
110
106
 
111
- @Query("SELECT * FROM <%= entityTableName %> entity WHERE entity.<%= getColumnName(relationshipName) %>_id = :id")
107
+ @Query("SELECT * FROM <%= entityTableName %> entity WHERE entity.<%= relationship.joinColumnNames[0] %> = :id")
112
108
  Flux<<%= persistClass %>> findBy<%= relationship.relationshipNameCapitalized %>(<%= primaryKey.type %> id);
113
109
 
114
- @Query("SELECT * FROM <%= entityTableName %> entity WHERE entity.<%= getColumnName(relationshipName) %>_id IS NULL")
110
+ @Query("SELECT * FROM <%= entityTableName %> entity WHERE entity.<%= relationship.joinColumnNames[0] %> IS NULL")
115
111
  Flux<<%= persistClass %>> findAllWhere<%= relationship.relationshipNameCapitalized %>IsNull();
116
112
  <%_ } else if (relationship.shouldWriteJoinTable) { _%>
117
113
 
118
- @Query("SELECT entity.* FROM <%= entityTableName %> entity JOIN <%= relationship.joinTable.name %> joinTable ON entity.id = joinTable.<%= getColumnName(name) %>_id WHERE joinTable.<%= getColumnName(relationshipName) %>_id = :id")
114
+ @Query("SELECT entity.* FROM <%= entityTableName %> entity JOIN <%= relationship.joinTable.name %> joinTable ON entity.<%= primaryKey.fields[0].columnName %> = joinTable.<%= relationship.joinColumnNames[0] %> WHERE joinTable.<%= relationship.joinColumnNames[0] %> = :id")
119
115
  Flux<<%= persistClass %>> findBy<%= relationship.relationshipNameCapitalized %>(<%= primaryKey.type %> id);
120
116
  <%_ } else if (relationship.relationshipOneToOne && !ownerSide) {
121
117
  let otherEntityRelationshipName = relationship.otherEntityRelationshipName;
122
118
  let otherEntityTableName = relationship.otherEntityTableName;
123
119
  _%>
124
120
 
125
- @Query("SELECT * FROM <%= entityTableName %> entity WHERE entity.id not in (select <%= getColumnName(otherEntityRelationshipName) %>_id from <%= otherEntityTableName %>)")
121
+ @Query("SELECT * FROM <%= entityTableName %> entity WHERE entity.<%= primaryKey.fields[0].columnName %> not in (select <%= relationship.joinColumnNames[0]%> from <%= otherEntityTableName %>)")
126
122
  Flux<<%= persistClass %>> findAllWhere<%= relationship.relationshipNameCapitalized %>IsNull();
127
123
  <%_ } _%>
128
124
  <%_ } _%>
@@ -138,10 +134,8 @@ public interface <%= entityClass %>Repository extends <% if (databaseTypeSql) {
138
134
 
139
135
  @Override
140
136
  Mono<Void> deleteById(<%= primaryKey.type %> id);
141
- <%_ } _%>
142
-
143
137
  }
144
- <%_ if (databaseTypeSql) { _%>
138
+
145
139
  interface <%= entityClass %>RepositoryInternal {
146
140
  <S extends <%= persistClass %>> Mono<S> save(S entity);
147
141
 
@@ -150,10 +144,10 @@ interface <%= entityClass %>RepositoryInternal {
150
144
  Flux<<%= persistClass %>> findAll();
151
145
 
152
146
  Mono<<%= persistClass %>> findById(<%= primaryKey.type %> id);
147
+ // this is not supported at the moment because of https://github.com/jhipster/generator-jhipster/issues/18269
148
+ // Flux<<%= persistClass %>> findAllBy(Pageable pageable, Criteria criteria);
153
149
 
154
- Flux<<%= persistClass %>> findAllBy(Pageable pageable, Criteria criteria);
155
-
156
- <%_ if (fieldsContainOwnerManyToMany) { _%>
150
+ <%_ if (implementsEagerLoadApis) { _%>
157
151
 
158
152
  Mono<<%= persistClass %>> findOneWithEagerRelationships(<%= primaryKey.type %> id);
159
153
 
@@ -162,8 +156,6 @@ interface <%= entityClass %>RepositoryInternal {
162
156
  Flux<<%= persistClass %>> findAllWithEagerRelationships(Pageable page);
163
157
 
164
158
  Mono<Void> deleteById(<%= primaryKey.type %> id);
165
-
166
159
  <%_ } _%>
167
-
168
- }
169
160
  <%_ } _%>
161
+ }