generator-jhipster 7.7.0 → 7.9.0

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 (603) hide show
  1. package/README.md +2 -3
  2. package/cli/environment-builder.js +3 -1
  3. package/cli/import-jdl.js +61 -35
  4. package/cli/jdl.js +5 -4
  5. package/cli/jhipster-command.js +1 -1
  6. package/cli/jhipster.js +0 -0
  7. package/cli/program.js +5 -3
  8. package/generators/app/index.js +21 -0
  9. package/generators/app/prompts.js +60 -12
  10. package/generators/azure-app-service/templates/github/workflows/azure-app-service.yml.ejs +3 -3
  11. package/generators/azure-spring-cloud/templates/github/workflows/azure-spring-cloud.yml.ejs +3 -3
  12. package/generators/bootstrap/index.js +1 -0
  13. package/generators/bootstrap-application/generator.mjs +1 -0
  14. package/generators/ci-cd/index.js +1 -1
  15. package/generators/ci-cd/templates/.gitlab-ci.yml.ejs +2 -3
  16. package/generators/ci-cd/templates/github-actions.yml.ejs +4 -4
  17. package/generators/client/files-angular.js +72 -89
  18. package/generators/client/files-common.js +1 -2
  19. package/generators/client/files-react.js +83 -71
  20. package/generators/client/files-vue.js +8 -54
  21. package/generators/client/index.js +19 -12
  22. package/generators/client/needle-api/needle-client-angular.js +1 -4
  23. package/generators/client/needle-api/needle-client-react.js +11 -8
  24. package/generators/client/prompts.js +1 -0
  25. package/generators/client/templates/angular/.eslintrc.json.ejs +10 -1
  26. package/generators/client/templates/angular/angular.json.ejs +1 -10
  27. package/generators/client/templates/angular/jest.conf.js.ejs +4 -2
  28. package/generators/client/templates/angular/package.json +33 -34
  29. package/generators/client/templates/angular/package.json.ejs +24 -23
  30. package/generators/client/templates/angular/src/main/webapp/app/account/activate/activate.component.html.ejs +4 -4
  31. package/generators/client/templates/angular/src/main/webapp/app/account/password/password-strength-bar/password-strength-bar.component.html.ejs +1 -1
  32. package/generators/client/templates/angular/src/main/webapp/app/account/password/password.component.html.ejs +15 -15
  33. package/generators/client/templates/angular/src/main/webapp/app/account/password/password.component.ts.ejs +17 -11
  34. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.html.ejs +16 -16
  35. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.ts.ejs +14 -9
  36. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/init/password-reset-init.component.html.ejs +9 -9
  37. package/generators/client/templates/angular/src/main/webapp/app/account/register/register.component.html.ejs +27 -27
  38. package/generators/client/templates/angular/src/main/webapp/app/account/register/register.component.ts.ejs +28 -13
  39. package/generators/client/templates/angular/src/main/webapp/app/account/sessions/sessions.component.html.ejs +7 -7
  40. package/generators/client/templates/angular/src/main/webapp/app/account/settings/settings.component.html.ejs +19 -19
  41. package/generators/client/templates/angular/src/main/webapp/app/account/settings/settings.component.spec.ts.ejs +1 -1
  42. package/generators/client/templates/angular/src/main/webapp/app/account/settings/settings.component.ts.ejs +35 -37
  43. package/generators/client/templates/angular/src/main/webapp/app/admin/configuration/configuration.component.html.ejs +4 -4
  44. package/generators/client/templates/angular/src/main/webapp/app/admin/gateway/gateway.component.html.ejs +7 -7
  45. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.html.ejs +6 -6
  46. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.module.ts.ejs +0 -1
  47. package/generators/client/templates/angular/src/main/webapp/app/admin/health/modal/health-modal.component.html.ejs +3 -3
  48. package/generators/client/templates/angular/src/main/webapp/app/admin/logs/logs.component.html.ejs +5 -5
  49. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/jvm-memory/jvm-memory.component.html.ejs +1 -1
  50. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/jvm-threads/jvm-threads.component.html.ejs +5 -5
  51. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-cache/metrics-cache.component.html.ejs +10 -10
  52. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-datasource/metrics-datasource.component.html.ejs +10 -10
  53. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-garbagecollector/metrics-garbagecollector.component.html.ejs +9 -9
  54. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.html.ejs +8 -8
  55. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-request/metrics-request.component.html.ejs +5 -5
  56. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/metrics.component.html.ejs +4 -4
  57. package/generators/client/templates/angular/src/main/webapp/app/admin/tracker/tracker.component.html.ejs +5 -5
  58. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.html.ejs +4 -4
  59. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.html.ejs +14 -14
  60. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +16 -16
  61. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/list/user-management.component.ts.ejs +3 -2
  62. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/update/user-management-update.component.html.ejs +133 -138
  63. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/update/user-management-update.component.spec.ts.ejs +22 -24
  64. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/update/user-management-update.component.ts.ejs +40 -49
  65. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/user-management.model.ts.ejs +2 -2
  66. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/user-management.module.ts.ejs +0 -1
  67. package/generators/client/templates/angular/src/main/webapp/app/config/navigation.constants.ts.ejs +23 -0
  68. package/generators/client/templates/angular/src/main/webapp/app/config/pagination.constants.ts.ejs +2 -3
  69. package/generators/client/templates/angular/src/main/webapp/app/core/request/request-util.ts.ejs +1 -1
  70. package/generators/client/templates/angular/src/main/webapp/app/core/util/data-util.service.ts.ejs +1 -1
  71. package/generators/client/templates/angular/src/main/webapp/app/core/util/parse-links.service.ts.ejs +1 -1
  72. package/generators/client/templates/angular/src/main/webapp/app/entities/user/user.model.ts.ejs +2 -2
  73. package/generators/client/templates/angular/src/main/webapp/app/entities/user/user.service.ts.ejs +7 -3
  74. package/generators/client/templates/angular/src/main/webapp/app/home/home.component.html.ejs +14 -14
  75. package/generators/client/templates/angular/src/main/webapp/app/layouts/error/error.component.html.ejs +1 -1
  76. package/generators/client/templates/angular/src/main/webapp/app/layouts/footer/footer.component.html.ejs +1 -1
  77. package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +21 -21
  78. package/generators/client/templates/angular/src/main/webapp/app/layouts/profiles/page-ribbon.component.ts.ejs +1 -1
  79. package/generators/client/templates/angular/src/main/webapp/app/login/login.component.html.ejs +9 -9
  80. package/generators/client/templates/angular/src/main/webapp/app/login/login.component.ts.ejs +16 -27
  81. package/generators/client/templates/angular/src/main/webapp/app/shared/filter/filter.component.html.ejs +10 -0
  82. package/generators/client/templates/angular/src/main/webapp/app/shared/filter/filter.component.ts.ejs +23 -0
  83. package/generators/client/templates/angular/src/main/webapp/app/shared/filter/filter.model.spec.ts.ejs +40 -0
  84. package/generators/client/templates/angular/src/main/webapp/app/shared/filter/filter.model.ts.ejs +95 -0
  85. package/generators/client/templates/angular/src/main/webapp/app/shared/pagination/item-count.component.ts.ejs +1 -1
  86. package/generators/client/templates/angular/src/main/webapp/app/shared/shared.module.ts.ejs +3 -0
  87. package/generators/client/templates/angular/src/main/webapp/app/shared/sort/sort.service.ts.ejs +31 -0
  88. package/generators/client/templates/angular/src/main/webapp/declarations.d.ts.ejs +3 -8
  89. package/generators/client/templates/angular/tsconfig.json.ejs +6 -0
  90. package/generators/client/templates/angular/tsconfig.spec.json.ejs +1 -1
  91. package/generators/client/templates/angular/webpack/webpack.custom.js.ejs +17 -2
  92. package/generators/client/templates/angular/webpack/webpack.microfrontend.js.ejs +1 -1
  93. package/generators/client/templates/common/package.json +8 -7
  94. package/generators/client/templates/common/src/main/webapp/swagger-ui/index.html.ejs +2 -0
  95. package/generators/client/templates/common/webpack/webpack.microfrontend.js.jhi.ejs +2 -3
  96. package/generators/client/templates/react/.eslintrc.json.ejs +10 -1
  97. package/generators/client/templates/react/jest.conf.js.ejs +4 -2
  98. package/generators/client/templates/react/package.json +58 -59
  99. package/generators/client/templates/react/package.json.ejs +4 -3
  100. package/generators/client/templates/react/src/main/webapp/app/app.scss.ejs +1 -1
  101. package/generators/client/templates/react/src/main/webapp/app/app.tsx.ejs +3 -3
  102. package/generators/client/templates/react/src/main/webapp/app/config/store.ts.ejs +53 -6
  103. package/generators/client/templates/react/src/main/webapp/app/config/translation-middleware.ts.ejs +58 -0
  104. package/generators/client/templates/react/src/main/webapp/app/entities/menu.tsx.ejs +45 -0
  105. package/generators/client/templates/react/src/main/webapp/app/entities/reducers.ts.ejs +25 -0
  106. package/generators/client/templates/react/src/main/webapp/app/entities/routes.tsx.ejs +49 -0
  107. package/generators/client/templates/react/src/main/webapp/app/index.tsx.ejs +7 -7
  108. package/generators/client/templates/react/src/main/webapp/app/main.tsx.ejs +19 -0
  109. package/generators/client/templates/react/src/main/webapp/app/modules/account/activate/activate.tsx.ejs +8 -4
  110. package/generators/client/templates/react/src/main/webapp/app/modules/account/index.tsx.ejs +9 -6
  111. package/generators/client/templates/react/src/main/webapp/app/modules/account/password/password.tsx.ejs +1 -0
  112. package/generators/client/templates/react/src/main/webapp/app/modules/account/password-reset/finish/password-reset-finish.tsx.ejs +8 -5
  113. package/generators/client/templates/react/src/main/webapp/app/modules/administration/administration.reducer.ts.ejs +6 -7
  114. package/generators/client/templates/react/src/main/webapp/app/modules/administration/health/health-modal.tsx.ejs +3 -2
  115. package/generators/client/templates/react/src/main/webapp/app/modules/administration/health/health.tsx.ejs +4 -4
  116. package/generators/client/templates/react/src/main/webapp/app/modules/administration/index.tsx.ejs +14 -11
  117. package/generators/client/templates/react/src/main/webapp/app/modules/administration/logs/logs.tsx.ejs +1 -1
  118. package/generators/client/templates/react/src/main/webapp/app/modules/administration/metrics/metrics.tsx.ejs +8 -2
  119. package/generators/client/templates/react/src/main/webapp/app/modules/administration/user-management/index.tsx.ejs +13 -13
  120. package/generators/client/templates/react/src/main/webapp/app/modules/administration/user-management/user-management-delete-dialog.tsx.ejs +7 -4
  121. package/generators/client/templates/react/src/main/webapp/app/modules/administration/user-management/user-management-detail.tsx.ejs +5 -3
  122. package/generators/client/templates/react/src/main/webapp/app/modules/administration/user-management/user-management-update.tsx.ejs +10 -6
  123. package/generators/client/templates/react/src/main/webapp/app/modules/administration/user-management/user-management.tsx.ejs +20 -27
  124. package/generators/client/templates/react/src/main/webapp/app/modules/login/login-modal.tsx.ejs +5 -1
  125. package/generators/client/templates/react/src/main/webapp/app/modules/login/login-redirect.tsx.ejs +6 -3
  126. package/generators/client/templates/react/src/main/webapp/app/modules/login/login.tsx.ejs +6 -5
  127. package/generators/client/templates/react/src/main/webapp/app/routes.tsx.ejs +70 -25
  128. package/generators/client/templates/react/src/main/webapp/app/shared/auth/private-route.spec.tsx.ejs +30 -27
  129. package/generators/client/templates/react/src/main/webapp/app/shared/auth/private-route.tsx.ejs +35 -34
  130. package/generators/client/templates/react/src/main/webapp/app/shared/error/error-boundary-routes.spec.tsx.ejs +55 -0
  131. package/generators/client/templates/react/src/main/webapp/app/shared/error/error-boundary-routes.tsx.ejs +21 -0
  132. package/generators/client/templates/react/src/main/webapp/app/shared/error/error-boundary.spec.tsx.ejs +1 -1
  133. package/generators/client/templates/react/src/main/webapp/app/shared/error/error-boundary.tsx.ejs +1 -1
  134. package/generators/client/templates/react/src/main/webapp/app/shared/error/error-loading.tsx.ejs +13 -0
  135. package/generators/client/templates/react/src/main/webapp/app/shared/error/page-not-found.tsx.ejs +9 -13
  136. package/generators/client/templates/react/src/main/webapp/app/shared/layout/header/header.spec.tsx.ejs +3 -5
  137. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/account.spec.tsx.ejs +5 -8
  138. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/entities.tsx.ejs +35 -7
  139. package/generators/client/templates/react/src/main/webapp/app/shared/layout/menus/menu-item.tsx.ejs +12 -11
  140. package/generators/client/templates/react/src/main/webapp/app/shared/reducers/index.ts.ejs +9 -2
  141. package/generators/client/templates/react/src/main/webapp/app/shared/reducers/locale.spec.ts.ejs +9 -3
  142. package/generators/client/templates/react/src/main/webapp/app/shared/reducers/locale.ts.ejs +21 -5
  143. package/generators/client/templates/react/src/main/webapp/app/typings.d.ts.ejs +15 -0
  144. package/generators/client/templates/react/src/main/webapp/microfrontends/entities-menu.tsx.ejs +3 -0
  145. package/generators/client/templates/react/src/main/webapp/microfrontends/entities-routes.tsx.ejs +3 -0
  146. package/generators/client/templates/react/tsconfig.json.ejs +5 -7
  147. package/generators/client/templates/react/tsconfig.test.json.ejs +10 -1
  148. package/generators/client/templates/react/webpack/webpack.common.js.ejs +12 -15
  149. package/generators/client/templates/react/webpack/webpack.dev.js.ejs +7 -8
  150. package/generators/client/templates/react/webpack/webpack.microfrontend.js.jhi.react.ejs +99 -0
  151. package/generators/client/templates/react/webpack/webpack.prod.js.ejs +31 -21
  152. package/generators/client/templates/vue/.eslintrc.js.ejs +10 -1
  153. package/generators/client/templates/vue/package.json +42 -42
  154. package/generators/client/templates/vue/package.json.ejs +4 -4
  155. package/generators/client/templates/vue/src/main/webapp/app/account/login-form/login-form.component.ts.ejs +2 -2
  156. package/generators/client/templates/vue/src/main/webapp/app/admin/metrics/metrics.vue.ejs +1 -1
  157. package/generators/client/templates/vue/src/main/webapp/app/admin/user-management/user-management-edit.component.ts.ejs +2 -2
  158. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +6 -3
  159. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.vue.ejs +2 -2
  160. package/generators/client/templates/vue/src/main/webapp/app/shared/alert/alert.service.ts.ejs +1 -1
  161. package/generators/client/templates/vue/src/main/webapp/app/shared/data/data-utils.service.ts.ejs +1 -1
  162. package/generators/client/templates/vue/src/main/webapp/app/shared/date/filters.ts.ejs +0 -6
  163. package/generators/client/templates/vue/src/test/javascript/jest.conf.js.ejs +7 -2
  164. package/generators/client/templates/vue/src/test/javascript/spec/app/account/register/register.component.spec.ts.ejs +1 -1
  165. package/generators/client/templates/vue/tsconfig.json.ejs +1 -4
  166. package/generators/client/templates/vue/tsconfig.spec.json.ejs +2 -2
  167. package/generators/client/templates/vue/webpack/webpack.common.js.ejs +6 -2
  168. package/generators/client/templates/vue/webpack/webpack.dev.js.ejs +4 -0
  169. package/generators/client/templates/vue/webpack/webpack.prod.js.ejs +8 -1
  170. package/generators/client/transform-angular.cjs +117 -0
  171. package/generators/client/transform-react.cjs +126 -0
  172. package/generators/client/transform-vue.cjs +42 -0
  173. package/generators/common/files.js +2 -9
  174. package/generators/common/templates/.husky/pre-commit.ejs +0 -0
  175. package/generators/common/templates/README.md.jhi.ejs +21 -5
  176. package/generators/common/templates/package.json +3 -3
  177. package/generators/cypress/files.js +34 -22
  178. package/generators/cypress/index.js +42 -19
  179. package/generators/cypress/templates/cypress-audits.config.ts.ejs +28 -0
  180. package/generators/cypress/templates/cypress.config.ts.ejs +57 -0
  181. package/generators/cypress/templates/src/test/javascript/cypress/{integration/account/login-page.spec.ts.ejs → e2e/account/login-page.cy.ts.ejs} +0 -0
  182. package/generators/cypress/templates/src/test/javascript/cypress/{integration/account/password-page.spec.ts.ejs → e2e/account/password-page.cy.ts.ejs} +0 -0
  183. package/generators/cypress/templates/src/test/javascript/cypress/{integration/account/register-page.spec.ts.ejs → e2e/account/register-page.cy.ts.ejs} +0 -0
  184. package/generators/cypress/templates/src/test/javascript/cypress/{integration/account/reset-password-page.spec.ts.ejs → e2e/account/reset-password-page.cy.ts.ejs} +0 -0
  185. package/generators/cypress/templates/src/test/javascript/cypress/{integration/account/settings-page.spec.ts.ejs → e2e/account/settings-page.cy.ts.ejs} +0 -0
  186. package/generators/cypress/templates/src/test/javascript/cypress/{integration/administration/administration.spec.ts.ejs → e2e/administration/administration.cy.ts.ejs} +1 -1
  187. package/generators/cypress/templates/src/test/javascript/cypress/{integration → e2e}/lighthouse.audits.ts.ejs +0 -0
  188. package/generators/cypress/templates/src/test/javascript/cypress/plugins/global.d.ts.ejs +25 -0
  189. package/generators/cypress/templates/src/test/javascript/cypress/plugins/index.ts.ejs +13 -14
  190. package/generators/cypress/templates/src/test/javascript/cypress/support/commands.ts.ejs +4 -4
  191. package/generators/cypress/templates/src/test/javascript/cypress/support/navbar.ts.ejs +1 -1
  192. package/generators/cypress/templates/src/test/javascript/cypress/support/oauth2.ts.ejs +8 -8
  193. package/generators/cypress/templates/src/test/javascript/cypress/tsconfig.json.ejs +8 -5
  194. package/generators/database-changelog-liquibase/files.js +1 -1
  195. package/generators/database-changelog-liquibase/index.js +3 -0
  196. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/added_entity.xml.ejs +1 -1
  197. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/added_entity_constraints.xml.ejs +1 -1
  198. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity.xml.ejs +1 -1
  199. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity_constraints.xml.ejs +2 -2
  200. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/changelog/updated_entity_migrate.xml.ejs +1 -1
  201. package/generators/database-changelog-liquibase/templates/src/main/resources/config/liquibase/fake-data/table_entity.csv.ejs +2 -2
  202. package/generators/docker-base.js +6 -3
  203. package/generators/docker-compose/files.js +5 -2
  204. package/generators/docker-compose/index.js +18 -25
  205. package/generators/docker-compose/templates/README-DOCKER-COMPOSE.md.ejs +1 -1
  206. package/generators/docker-compose/templates/docker-compose.yml.ejs +10 -8
  207. package/generators/docker-compose/templates/realm-config/jhipster-realm.json.ejs +62 -4
  208. package/generators/docker-prompts.js +1 -2
  209. package/generators/docker-utils.js +0 -1
  210. package/generators/entity/index.js +39 -34
  211. package/generators/entity/prompts.js +1 -52
  212. package/generators/entity-client/files-angular.cjs +169 -0
  213. package/generators/entity-client/files-cypress.cjs +52 -0
  214. package/generators/entity-client/files-react.cjs +113 -0
  215. package/generators/entity-client/files-vue.cjs +140 -0
  216. package/generators/entity-client/files.js +10 -381
  217. package/generators/entity-client/index.js +126 -17
  218. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/delete/entity-management-delete-dialog.component.html.ejs +4 -5
  219. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/delete/entity-management-delete-dialog.component.ts.ejs +2 -1
  220. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/detail/entity-management-detail.component.html.ejs +12 -11
  221. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/entity-management.module.ts.ejs +0 -5
  222. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/entity.model.ts.ejs +18 -25
  223. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/entity.test-samples.ts.ejs +45 -0
  224. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.html.ejs +45 -37
  225. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.spec.ts.ejs +47 -28
  226. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.ts.ejs +292 -94
  227. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/infinite-scroll-template.ejs +5 -106
  228. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/pagination-template.ejs +2 -82
  229. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/route/entity-management-routing-resolve.service.spec.ts.ejs +5 -5
  230. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/route/entity-management-routing-resolve.service.ts.ejs +5 -5
  231. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/route/entity-management-routing.module.ts.ejs +2 -3
  232. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/service/entity.service.spec.ts.ejs +89 -175
  233. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/service/entity.service.ts.ejs +69 -44
  234. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-form.service.spec.ts.ejs +111 -0
  235. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-form.service.ts.ejs +263 -0
  236. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.html.ejs +99 -120
  237. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.spec.ts.ejs +47 -71
  238. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.ts.ejs +79 -195
  239. package/generators/entity-client/templates/{common/src/test/javascript/cypress/integration/entity/entity.spec.ts.ejs → cypress/src/test/javascript/cypress/e2e/entity/entity.cy.ts.ejs} +27 -17
  240. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-delete-dialog.tsx.ejs +12 -7
  241. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-detail.tsx.ejs +10 -7
  242. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-update.tsx.ejs +29 -23
  243. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity.reducer.ts.ejs +2 -2
  244. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity.tsx.ejs +32 -30
  245. package/generators/entity-client/templates/react/src/main/webapp/app/entities/index.tsx.ejs +13 -13
  246. package/generators/entity-client/templates/react/src/main/webapp/app/entities/react_validators.ejs +25 -32
  247. package/generators/entity-client/templates/vue/src/main/webapp/app/entities/entity-update.component.ts.ejs +2 -2
  248. package/generators/entity-i18n/templates/i18n/entity_fr.json.ejs +1 -1
  249. package/generators/entity-server/cleanup.js +41 -0
  250. package/generators/entity-server/files.js +148 -63
  251. package/generators/entity-server/index.js +30 -25
  252. package/generators/entity-server/templates/couchbase/src/main/java/package/domain/Entity.java.jhi.spring_data_couchbase.ejs +1 -1
  253. package/generators/entity-server/templates/couchbase/src/main/java/package/repository/EntityRepository.java.ejs +31 -8
  254. package/generators/entity-server/templates/partials/save_template.ejs +1 -1
  255. package/generators/entity-server/templates/partials/update_template.ejs +77 -0
  256. package/generators/entity-server/templates/reactive/partials/save_template.ejs +1 -1
  257. package/generators/entity-server/templates/reactive/partials/update_template.ejs +41 -0
  258. package/generators/entity-server/templates/src/main/java/package/common/get_all_template.ejs +13 -7
  259. package/generators/entity-server/templates/src/main/java/package/common/get_template.ejs +1 -1
  260. package/generators/entity-server/templates/src/main/java/package/common/inject_template.ejs +13 -4
  261. package/generators/entity-server/templates/src/main/java/package/common/patch_template.ejs +2 -2
  262. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.ejs +2 -1
  263. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.elastic_search.ejs +17 -0
  264. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.javax_lifecycle_events.ejs +31 -0
  265. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.spring_data_cassandra.ejs +3 -1
  266. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.spring_data_persistable.ejs +54 -0
  267. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.spring_data_reactive.ejs +1 -1
  268. package/generators/entity-server/templates/src/main/java/package/domain/EntityCallback.java.ejs +43 -0
  269. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository.java.ejs +12 -7
  270. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryInternalImpl_reactive.java.ejs +23 -27
  271. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryWithBagRelationships.java.ejs +2 -2
  272. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryWithBagRelationshipsImpl.java.ejs +17 -9
  273. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository_reactive.java.ejs +18 -26
  274. package/generators/entity-server/templates/src/main/java/package/repository/EntitySqlHelper_reactive.java.ejs +2 -2
  275. package/generators/entity-server/templates/src/main/java/package/repository/rowmapper/EntityRowMapper.java.ejs +2 -2
  276. package/generators/entity-server/templates/src/main/java/package/repository/search/EntitySearchRepository.java.ejs +50 -26
  277. package/generators/entity-server/templates/src/main/java/package/service/EntityQueryService.java.ejs +3 -3
  278. package/generators/entity-server/templates/src/main/java/package/service/EntityService.java.ejs +10 -2
  279. package/generators/entity-server/templates/src/main/java/package/service/impl/EntityServiceImpl.java.ejs +22 -6
  280. package/generators/entity-server/templates/src/main/java/package/service/mapper/EntityMapper.java.ejs +61 -90
  281. package/generators/entity-server/templates/src/main/java/package/web/rest/EntityResource.java.ejs +8 -9
  282. package/generators/entity-server/templates/src/test/java/package/web/rest/EntityResourceIT.java.ejs +165 -144
  283. package/generators/gae/index.js +1 -1
  284. package/generators/generate-blueprint/constants.mjs +22 -2
  285. package/generators/generate-blueprint/esm.mjs +0 -0
  286. package/generators/generate-blueprint/generator.mjs +25 -6
  287. package/generators/generate-blueprint/templates/.github/workflows/generator.yml.ejs +5 -3
  288. package/generators/generate-blueprint/templates/cli/cli.mjs.ejs +0 -0
  289. package/generators/generate-blueprint/templates/cli/commands.cjs.ejs +2 -1
  290. package/generators/generate-blueprint/templates/generators/generator/generator.mjs.jhi.ejs +6 -5
  291. package/generators/generate-blueprint/templates/generators/generator/generator.spec.mjs.ejs +10 -1
  292. package/generators/generate-blueprint/templates/generators/generator/templates/template-file.ejs +0 -0
  293. package/generators/generator-base-blueprint.js +19 -20
  294. package/generators/generator-base-private.js +117 -65
  295. package/generators/generator-base.js +270 -91
  296. package/generators/generator-constants.js +119 -67
  297. package/generators/generator-defaults.js +1 -0
  298. package/generators/generator-transforms.js +0 -1
  299. package/generators/gradle/constants.cjs +1 -1
  300. package/generators/heroku/index.js +5 -4
  301. package/generators/heroku/templates/application-heroku.yml.ejs +1 -2
  302. package/generators/heroku/templates/heroku.gradle.ejs +28 -1
  303. package/generators/heroku/templates/pom-profile.xml.ejs +29 -0
  304. package/generators/init/templates/.husky/pre-commit +0 -0
  305. package/generators/java/index.cjs +2 -2
  306. package/generators/kubernetes/templates/db/couchbase.yml.ejs +1 -2
  307. package/generators/kubernetes/templates/db/mongodb.yml.ejs +1 -2
  308. package/generators/kubernetes/templates/ingress.yml.ejs +11 -4
  309. package/generators/kubernetes/templates/kubectl-apply.sh.ejs +0 -0
  310. package/generators/kubernetes/templates/monitoring/jhipster-grafana.yml.ejs +6 -2
  311. package/generators/kubernetes/templates/registry/consul.yml.ejs +1 -2
  312. package/generators/kubernetes/templates/registry/jhipster-registry.yml.ejs +1 -2
  313. package/generators/kubernetes-knative/templates/kubectl-apply.sh.ejs +0 -0
  314. package/generators/languages/templates/src/main/webapp/i18n/al/global.json.ejs +7 -1
  315. package/generators/languages/templates/src/main/webapp/i18n/ar-ly/global.json.ejs +7 -1
  316. package/generators/languages/templates/src/main/webapp/i18n/bg/global.json.ejs +7 -1
  317. package/generators/languages/templates/src/main/webapp/i18n/bn/global.json.ejs +7 -1
  318. package/generators/languages/templates/src/main/webapp/i18n/by/global.json.ejs +7 -1
  319. package/generators/languages/templates/src/main/webapp/i18n/ca/global.json.ejs +7 -1
  320. package/generators/languages/templates/src/main/webapp/i18n/cs/global.json.ejs +7 -1
  321. package/generators/languages/templates/src/main/webapp/i18n/da/global.json.ejs +7 -1
  322. package/generators/languages/templates/src/main/webapp/i18n/de/global.json.ejs +7 -1
  323. package/generators/languages/templates/src/main/webapp/i18n/el/global.json.ejs +7 -1
  324. package/generators/languages/templates/src/main/webapp/i18n/en/global.json.ejs +7 -1
  325. package/generators/languages/templates/src/main/webapp/i18n/en/health.json.ejs +3 -0
  326. package/generators/languages/templates/src/main/webapp/i18n/es/global.json.ejs +7 -1
  327. package/generators/languages/templates/src/main/webapp/i18n/et/global.json.ejs +7 -1
  328. package/generators/languages/templates/src/main/webapp/i18n/fa/global.json.ejs +7 -1
  329. package/generators/languages/templates/src/main/webapp/i18n/fi/global.json.ejs +7 -1
  330. package/generators/languages/templates/src/main/webapp/i18n/fr/global.json.ejs +7 -1
  331. package/generators/languages/templates/src/main/webapp/i18n/gl/global.json.ejs +7 -1
  332. package/generators/languages/templates/src/main/webapp/i18n/hi/global.json.ejs +7 -1
  333. package/generators/languages/templates/src/main/webapp/i18n/hr/global.json.ejs +7 -1
  334. package/generators/languages/templates/src/main/webapp/i18n/hu/global.json.ejs +7 -1
  335. package/generators/languages/templates/src/main/webapp/i18n/hy/global.json.ejs +7 -1
  336. package/generators/languages/templates/src/main/webapp/i18n/in/global.json.ejs +7 -1
  337. package/generators/languages/templates/src/main/webapp/i18n/it/global.json.ejs +7 -1
  338. package/generators/languages/templates/src/main/webapp/i18n/ja/global.json.ejs +7 -1
  339. package/generators/languages/templates/src/main/webapp/i18n/ko/global.json.ejs +7 -1
  340. package/generators/languages/templates/src/main/webapp/i18n/mr/global.json.ejs +7 -1
  341. package/generators/languages/templates/src/main/webapp/i18n/my/global.json.ejs +7 -1
  342. package/generators/languages/templates/src/main/webapp/i18n/nl/global.json.ejs +7 -1
  343. package/generators/languages/templates/src/main/webapp/i18n/pa/global.json.ejs +7 -1
  344. package/generators/languages/templates/src/main/webapp/i18n/pl/global.json.ejs +7 -1
  345. package/generators/languages/templates/src/main/webapp/i18n/pt-br/global.json.ejs +7 -1
  346. package/generators/languages/templates/src/main/webapp/i18n/pt-pt/global.json.ejs +7 -1
  347. package/generators/languages/templates/src/main/webapp/i18n/ro/global.json.ejs +7 -1
  348. package/generators/languages/templates/src/main/webapp/i18n/ru/global.json.ejs +7 -1
  349. package/generators/languages/templates/src/main/webapp/i18n/si/global.json.ejs +7 -1
  350. package/generators/languages/templates/src/main/webapp/i18n/sk/global.json.ejs +7 -1
  351. package/generators/languages/templates/src/main/webapp/i18n/sr/global.json.ejs +7 -1
  352. package/generators/languages/templates/src/main/webapp/i18n/sv/global.json.ejs +7 -1
  353. package/generators/languages/templates/src/main/webapp/i18n/ta/global.json.ejs +7 -1
  354. package/generators/languages/templates/src/main/webapp/i18n/te/global.json.ejs +7 -1
  355. package/generators/languages/templates/src/main/webapp/i18n/th/global.json.ejs +7 -1
  356. package/generators/languages/templates/src/main/webapp/i18n/tr/global.json.ejs +7 -1
  357. package/generators/languages/templates/src/main/webapp/i18n/ua/global.json.ejs +7 -1
  358. package/generators/languages/templates/src/main/webapp/i18n/uz-Cyrl-uz/global.json +7 -1
  359. package/generators/languages/templates/src/main/webapp/i18n/uz-Latn-uz/global.json.ejs +7 -1
  360. package/generators/languages/templates/src/main/webapp/i18n/vi/global.json.ejs +7 -1
  361. package/generators/languages/templates/src/main/webapp/i18n/zh-cn/global.json.ejs +7 -1
  362. package/generators/languages/templates/src/main/webapp/i18n/zh-tw/global.json.ejs +7 -1
  363. package/generators/languages/templates/src/test/resources/i18n/messages_al.properties.ejs +4 -1
  364. package/generators/languages/templates/src/test/resources/i18n/messages_ar_LY.properties.ejs +4 -1
  365. package/generators/languages/templates/src/test/resources/i18n/messages_bg.properties.ejs +1 -1
  366. package/generators/languages/templates/src/test/resources/i18n/messages_bn.properties.ejs +4 -1
  367. package/generators/languages/templates/src/test/resources/i18n/messages_by.properties.ejs +4 -1
  368. package/generators/languages/templates/src/test/resources/i18n/messages_ca.properties.ejs +4 -1
  369. package/generators/languages/templates/src/test/resources/i18n/messages_cs.properties.ejs +4 -1
  370. package/generators/languages/templates/src/test/resources/i18n/messages_da.properties.ejs +4 -1
  371. package/generators/languages/templates/src/test/resources/i18n/messages_de.properties.ejs +4 -1
  372. package/generators/languages/templates/src/test/resources/i18n/messages_el.properties.ejs +4 -1
  373. package/generators/languages/templates/src/test/resources/i18n/messages_es.properties.ejs +4 -1
  374. package/generators/languages/templates/src/test/resources/i18n/messages_et.properties.ejs +4 -1
  375. package/generators/languages/templates/src/test/resources/i18n/messages_fa.properties.ejs +4 -1
  376. package/generators/languages/templates/src/test/resources/i18n/messages_fi.properties.ejs +1 -1
  377. package/generators/languages/templates/src/test/resources/i18n/messages_gl.properties.ejs +4 -1
  378. package/generators/languages/templates/src/test/resources/i18n/messages_hi.properties.ejs +4 -1
  379. package/generators/languages/templates/src/test/resources/i18n/messages_hr.properties.ejs +1 -1
  380. package/generators/languages/templates/src/test/resources/i18n/messages_hu.properties.ejs +4 -1
  381. package/generators/languages/templates/src/test/resources/i18n/messages_hy.properties.ejs +4 -1
  382. package/generators/languages/templates/src/test/resources/i18n/messages_in.properties.ejs +4 -1
  383. package/generators/languages/templates/src/test/resources/i18n/messages_it.properties.ejs +4 -1
  384. package/generators/languages/templates/src/test/resources/i18n/messages_ja.properties.ejs +4 -1
  385. package/generators/languages/templates/src/test/resources/i18n/messages_ko.properties.ejs +4 -1
  386. package/generators/languages/templates/src/test/resources/i18n/messages_mr.properties.ejs +4 -1
  387. package/generators/languages/templates/src/test/resources/i18n/messages_my.properties.ejs +4 -1
  388. package/generators/languages/templates/src/test/resources/i18n/messages_nl.properties.ejs +4 -1
  389. package/generators/languages/templates/src/test/resources/i18n/messages_pa.properties.ejs +1 -1
  390. package/generators/languages/templates/src/test/resources/i18n/messages_pl.properties.ejs +4 -1
  391. package/generators/languages/templates/src/test/resources/i18n/messages_pt_BR.properties.ejs +1 -1
  392. package/generators/languages/templates/src/test/resources/i18n/messages_pt_PT.properties.ejs +4 -1
  393. package/generators/languages/templates/src/test/resources/i18n/messages_ro.properties.ejs +4 -1
  394. package/generators/languages/templates/src/test/resources/i18n/messages_ru.properties.ejs +4 -1
  395. package/generators/languages/templates/src/test/resources/i18n/messages_si.properties.ejs +4 -1
  396. package/generators/languages/templates/src/test/resources/i18n/messages_sk.properties.ejs +4 -1
  397. package/generators/languages/templates/src/test/resources/i18n/messages_sr.properties.ejs +4 -1
  398. package/generators/languages/templates/src/test/resources/i18n/messages_sv.properties.ejs +4 -1
  399. package/generators/languages/templates/src/test/resources/i18n/messages_ta.properties.ejs +4 -1
  400. package/generators/languages/templates/src/test/resources/i18n/messages_te.properties.ejs +4 -1
  401. package/generators/languages/templates/src/test/resources/i18n/messages_th.properties.ejs +4 -1
  402. package/generators/languages/templates/src/test/resources/i18n/messages_tr.properties.ejs +4 -1
  403. package/generators/languages/templates/src/test/resources/i18n/messages_ua.properties.ejs +4 -1
  404. package/generators/languages/templates/src/test/resources/i18n/messages_uz_Cyrl_UZ.properties.ejs +4 -1
  405. package/generators/languages/templates/src/test/resources/i18n/messages_uz_Latn_UZ.properties.ejs +4 -1
  406. package/generators/languages/templates/src/test/resources/i18n/messages_vi.properties.ejs +4 -1
  407. package/generators/languages/templates/src/test/resources/i18n/messages_zh_CN.properties.ejs +4 -1
  408. package/generators/languages/templates/src/test/resources/i18n/messages_zh_TW.properties.ejs +4 -1
  409. package/generators/maven/files.cjs +0 -1
  410. package/generators/maven/templates/.mvn/wrapper/maven-wrapper.jar +0 -0
  411. package/generators/maven/templates/.mvn/wrapper/maven-wrapper.properties +18 -2
  412. package/generators/maven/templates/mvnw +13 -7
  413. package/generators/maven/templates/mvnw.cmd +19 -13
  414. package/generators/maven/templates/pom.xml.jhi.ejs +2 -2
  415. package/generators/openapi-client/files.js +2 -8
  416. package/generators/openapi-client/index.js +2 -0
  417. package/generators/openshift/templates/registry/consul.yml.ejs +1 -2
  418. package/generators/openshift/templates/registry/jhipster-registry.yml.ejs +1 -2
  419. package/generators/project-name/index.cjs +8 -5
  420. package/generators/server/cleanup-angular.js +37 -0
  421. package/generators/server/cleanup-cache-provider.js +46 -0
  422. package/generators/server/cleanup-cassandra.js +49 -0
  423. package/generators/server/cleanup-cucumber.js +40 -0
  424. package/generators/server/cleanup-elasticsearch.js +48 -0
  425. package/generators/server/cleanup-gradle.js +40 -0
  426. package/generators/server/cleanup-kafka.js +41 -0
  427. package/generators/server/cleanup-maven.js +37 -0
  428. package/generators/server/cleanup-mongodb.js +40 -0
  429. package/generators/server/cleanup-oauth2.js +43 -0
  430. package/generators/server/cleanup-reactive.js +38 -0
  431. package/generators/server/cleanup-sql.js +48 -0
  432. package/generators/server/cleanup.js +89 -39
  433. package/generators/server/esm.mjs +1 -0
  434. package/generators/server/files-couchbase.js +11 -10
  435. package/generators/server/files-sql.js +197 -4
  436. package/generators/server/files.js +239 -248
  437. package/generators/server/index.js +38 -86
  438. package/generators/server/needle-api/needle-server-gradle.js +38 -0
  439. package/generators/server/needles.cjs +79 -0
  440. package/generators/server/templates/.mvn/jvm.config +1 -0
  441. package/generators/server/templates/.mvn/wrapper/maven-wrapper.jar +0 -0
  442. package/generators/server/templates/.mvn/wrapper/maven-wrapper.properties +18 -2
  443. package/generators/server/templates/.npmrc.ejs +1 -0
  444. package/generators/server/templates/build.gradle.ejs +126 -229
  445. package/generators/server/templates/couchbase/src/main/java/package/repository/JHipsterCouchbaseRepository.java.ejs +24 -1
  446. package/generators/server/templates/couchbase/src/test/java/package/config/CouchbaseTestContainer.java.ejs +67 -0
  447. package/generators/server/templates/couchbase/src/test/java/package/config/EmbeddedCouchbase.java.ejs +30 -0
  448. package/generators/server/templates/devcontainer/Dockerfile.ejs +25 -0
  449. package/generators/server/templates/devcontainer/devcontainer.json.ejs +64 -0
  450. package/generators/server/templates/gradle/docker.gradle.ejs +6 -0
  451. package/generators/server/templates/gradle/profile_dev.gradle.ejs +95 -3
  452. package/generators/server/templates/gradle/profile_prod.gradle.ejs +80 -4
  453. package/generators/server/templates/gradle/wrapper/gradle-wrapper.jar +0 -0
  454. package/generators/server/templates/gradle.properties.ejs +17 -13
  455. package/generators/server/templates/gradlew +0 -0
  456. package/generators/server/templates/mvnw +13 -7
  457. package/generators/server/templates/mvnw.cmd +19 -13
  458. package/generators/server/templates/npmw +0 -0
  459. package/generators/server/templates/pom.xml.ejs +287 -236
  460. package/generators/server/templates/settings.gradle.ejs +8 -5
  461. package/generators/server/templates/sql/common/src/main/docker/config/mariadb/my.cnf +49 -0
  462. package/generators/server/templates/sql/common/src/main/docker/config/mysql/my.cnf +82 -0
  463. package/generators/server/templates/{src → sql/common/src}/main/docker/mariadb.yml.ejs +2 -0
  464. package/generators/server/templates/{src → sql/common/src}/main/docker/mssql.yml.ejs +0 -0
  465. package/generators/server/templates/{src → sql/common/src}/main/docker/mysql.yml.ejs +2 -1
  466. package/generators/server/templates/{src → sql/common/src}/main/docker/postgresql.yml.ejs +0 -0
  467. package/generators/server/templates/{src → sql/common/src}/main/java/package/config/LiquibaseConfiguration.java.ejs +0 -0
  468. package/generators/server/templates/{src → sql/common/src}/main/resources/h2.server.properties.ejs +0 -0
  469. package/generators/server/templates/sql/common/src/test/java/package/config/EmbeddedSQL.java.ejs +30 -0
  470. package/generators/server/templates/sql/common/src/test/java/package/config/MariadbTestContainer.java.ejs +60 -0
  471. package/generators/server/templates/sql/common/src/test/java/package/config/MsSqlTestContainer.java.ejs +59 -0
  472. package/generators/server/templates/sql/common/src/test/java/package/config/MysqlTestContainer.java.ejs +69 -0
  473. package/generators/server/templates/sql/common/src/test/java/package/config/PostgreSqlTestContainer.java.ejs +59 -0
  474. package/generators/server/templates/sql/common/src/test/java/package/config/SqlTestContainer.java.ejs +28 -0
  475. package/generators/server/templates/{src → sql/common/src}/test/java/package/config/timezone/HibernateTimeZoneIT.java.ejs +0 -0
  476. package/generators/server/templates/{src → sql/common/src}/test/java/package/repository/timezone/DateTimeWrapper.java.ejs +0 -0
  477. package/generators/server/templates/{src → sql/common/src}/test/java/package/repository/timezone/DateTimeWrapperRepository.java.ejs +0 -0
  478. package/generators/server/templates/sql/common/src/test/resources/config/application-testdev.yml.ejs +93 -0
  479. package/generators/server/templates/{src/test/resources/config/application-testcontainers.yml.ejs → sql/common/src/test/resources/config/application-testprod.yml.ejs} +17 -33
  480. package/generators/server/templates/sql/common/src/test/resources/testcontainers/mariadb/my.cnf +49 -0
  481. package/generators/server/templates/sql/common/src/test/resources/testcontainers/mysql/my.cnf +83 -0
  482. package/generators/server/templates/{src → sql/reactive/src}/main/java/package/repository/EntityManager.java.ejs +48 -38
  483. package/generators/server/templates/{src → sql/reactive/src}/main/java/package/repository/rowmapper/ColumnConverter.java.ejs +0 -0
  484. package/generators/server/templates/{src → sql/reactive/src}/main/java/package/repository/rowmapper/UserRowMapper.java.ejs +0 -0
  485. package/generators/server/templates/src/main/docker/app.yml.ejs +18 -20
  486. package/generators/server/templates/src/main/docker/cassandra-migration.yml.ejs +1 -0
  487. package/generators/server/templates/src/main/docker/config/realm-config/jhipster-realm.json.ejs +64 -7
  488. package/generators/server/templates/src/main/docker/jhipster-control-center.yml.ejs +1 -1
  489. package/generators/server/templates/src/main/docker/jhipster-registry.yml.ejs +1 -1
  490. package/generators/server/templates/src/main/docker/jib/entrypoint.sh.ejs +36 -1
  491. package/generators/server/templates/src/main/docker/keycloak.yml.ejs +8 -6
  492. package/generators/server/templates/src/main/java/package/config/ApplicationProperties.java.ejs +3 -0
  493. package/generators/server/templates/src/main/java/package/config/AsyncConfiguration.java.ejs +2 -0
  494. package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_couchbase.java.ejs +1 -1
  495. 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
  496. package/generators/server/templates/src/main/java/package/config/KafkaSseProducer.java.ejs +30 -0
  497. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration.java.ejs +21 -33
  498. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration_reactive.java.ejs +108 -15
  499. package/generators/server/templates/src/main/java/package/config/WebConfigurer.java.ejs +6 -0
  500. package/generators/server/templates/src/main/java/package/security/DomainUserDetailsService.java.ejs +6 -3
  501. package/generators/server/templates/src/main/java/package/security/jwt/JWTFilter.java.ejs +1 -1
  502. package/generators/server/templates/src/main/java/package/security/jwt/TokenProvider.java.ejs +1 -1
  503. package/generators/server/templates/src/main/java/package/security/oauth2/CustomClaimConverter.java.ejs +10 -3
  504. package/generators/server/templates/src/main/java/package/service/UserService.java.ejs +12 -2
  505. package/generators/server/templates/src/main/java/package/web/rest/KafkaResource.java.ejs +60 -108
  506. package/generators/server/templates/src/main/java/package/web/rest/KafkaResource_reactive.java.ejs +74 -0
  507. package/generators/server/templates/src/main/java/package/web/rest/LogoutResource.java.ejs +1 -5
  508. package/generators/server/templates/src/main/java/package/web/rest/LogoutResource_reactive.java.ejs +1 -5
  509. package/generators/server/templates/src/main/java/package/web/rest/UserResource.java.ejs +3 -4
  510. package/generators/server/templates/src/main/resources/config/application-dev.yml.ejs +4 -3
  511. package/generators/server/templates/src/main/resources/config/application.yml.ejs +27 -23
  512. package/generators/server/templates/src/main/resources/config/liquibase/changelog/initial_schema.xml.ejs +1 -1
  513. package/generators/server/templates/src/main/resources/config/liquibase/master.xml.ejs +54 -24
  514. package/generators/server/templates/src/main/resources/swagger/api.yml.ejs +3 -3
  515. package/generators/server/templates/src/test/java/package/CassandraKeyspaceIT.java.ejs +3 -4
  516. package/generators/server/templates/src/test/java/package/IntegrationTest.java.ejs +40 -21
  517. package/generators/server/templates/src/test/java/package/TechnicalStructureTest.java.ejs +0 -3
  518. package/generators/server/templates/src/test/java/package/{repository/search/UserSearchRepositoryMockConfiguration.java.ejs → config/AsyncSyncConfiguration.java.ejs} +12 -10
  519. package/generators/server/templates/src/test/java/package/config/CassandraTestContainer.java.ejs +141 -0
  520. package/generators/{entity-server/templates/src/test/java/package/repository/search/EntitySearchRepositoryMockConfiguration.java.ejs → server/templates/src/test/java/package/config/ElasticsearchReactiveTestConfiguration.java.ejs} +14 -11
  521. package/generators/server/templates/src/test/java/package/config/ElasticsearchTestContainer.java.ejs +68 -0
  522. package/generators/server/templates/src/test/java/package/config/EmbeddedCassandra.java.ejs +30 -0
  523. package/generators/server/templates/src/test/java/package/config/EmbeddedElasticsearch.java.ejs +30 -0
  524. package/generators/server/templates/src/test/java/package/config/EmbeddedKafka.java.ejs +30 -0
  525. package/generators/server/templates/src/test/java/package/config/EmbeddedMongo.java.ejs +30 -0
  526. package/generators/server/templates/src/test/java/package/config/EmbeddedNeo4j.java.ejs +29 -0
  527. package/generators/server/templates/src/test/java/package/config/EmbeddedRedis.java.ejs +30 -0
  528. package/generators/server/templates/src/test/java/package/config/JHipsterBlockHoundIntegration.java.ejs +11 -2
  529. package/generators/server/templates/src/test/java/package/config/KafkaTestContainer.java.ejs +56 -0
  530. package/generators/server/templates/src/test/java/package/config/MongoDbTestContainer.java.ejs +67 -0
  531. package/generators/server/templates/src/test/java/package/config/Neo4jTestContainer.java.ejs +66 -0
  532. package/generators/server/templates/src/test/java/package/config/RedisTestContainer.java.ejs +57 -0
  533. package/generators/server/templates/src/test/java/package/config/{NoOpMailConfiguration.java.ejs → SpringBootTestClassOrderer.java.ejs} +16 -16
  534. package/generators/server/templates/src/test/java/package/config/TestContainersSpringContextCustomizerFactory.java.ejs +250 -0
  535. package/generators/server/templates/src/test/java/package/config/WebConfigurerTest.java.ejs +0 -23
  536. package/generators/server/templates/src/test/java/package/cucumber/CucumberIT.java.ejs +3 -10
  537. package/generators/server/templates/src/test/java/package/security/DomainUserDetailsServiceIT.java.ejs +6 -7
  538. package/generators/server/templates/src/test/java/package/security/jwt/JWTFilterTest.java.ejs +5 -5
  539. package/generators/server/templates/src/test/java/package/service/MailServiceIT.java.ejs +9 -19
  540. package/generators/server/templates/src/test/java/package/service/UserServiceIT.java.ejs +9 -15
  541. package/generators/server/templates/src/test/java/package/service/mapper/UserMapperTest.java.ejs +1 -1
  542. package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT.java.ejs +20 -74
  543. package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT_oauth2.java.ejs +1 -4
  544. package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT_skipUserManagement.java.ejs +1 -12
  545. package/generators/server/templates/src/test/java/package/web/rest/KafkaResourceIT.java.ejs +52 -123
  546. package/generators/server/templates/src/test/java/package/web/rest/KafkaResourceIT_reactive.java.ejs +99 -0
  547. package/generators/server/templates/src/test/java/package/web/rest/PublicUserResourceIT.java.ejs +7 -10
  548. package/generators/server/templates/src/test/java/package/web/rest/TestUtil.java.ejs +13 -10
  549. package/generators/server/templates/src/test/java/package/web/rest/UserJWTControllerIT.java.ejs +1 -4
  550. package/generators/server/templates/src/test/java/package/web/rest/UserResourceIT.java.ejs +78 -56
  551. package/generators/server/templates/src/test/java/package/web/rest/errors/ExceptionTranslatorIT.java.ejs +1 -4
  552. package/generators/server/templates/src/test/java/package/web/rest/errors/ExceptionTranslatorIT_reactive.java.ejs +1 -4
  553. package/generators/server/templates/src/test/resources/META-INF/spring.factories.ejs +1 -1
  554. package/generators/server/templates/src/test/resources/config/application.yml.ejs +33 -81
  555. package/generators/server/templates/src/test/resources/junit-platform.properties.ejs +1 -0
  556. package/generators/server/templates/src/test/resources/templates/mail/activationEmail.html.ejs +19 -0
  557. package/generators/server/templates/src/test/resources/templates/mail/creationEmail.html.ejs +19 -0
  558. package/generators/server/templates/src/test/resources/templates/mail/passwordResetEmail.html.ejs +21 -0
  559. package/generators/server/templates/src/test/resources/testcontainers.properties.ejs +1 -0
  560. package/generators/spring-controller/index.js +16 -1
  561. package/generators/sql-constants.js +85 -0
  562. package/generators/statistics.js +6 -5
  563. package/generators/upgrade/index.js +1 -1
  564. package/generators/utils.js +32 -30
  565. package/generators/workspaces/index.js +32 -28
  566. package/jdl/converters/jdl-to-json/jdl-to-json-relationship-converter.js +2 -3
  567. package/jdl/converters/json-to-jdl-converter.js +23 -6
  568. package/jdl/exporters/applications/jhipster-application-formatter.js +7 -0
  569. package/jdl/jhipster/application-options.js +8 -0
  570. package/jdl/jhipster/default-application-options.js +2 -2
  571. package/jdl/parsing/lexer/application-tokens.js +6 -0
  572. package/jdl/parsing/validator.js +7 -0
  573. package/jdl/validators/application-validator.js +3 -1
  574. package/jdl/validators/jdl-with-application-validator.js +1 -0
  575. package/jdl/validators/jdl-without-application-validator.js +3 -2
  576. package/lib/support/base.cjs +43 -0
  577. package/lib/support/needles.cjs +221 -0
  578. package/lib/support/shared-data.cjs +2 -2
  579. package/package.json +34 -32
  580. package/utils/blueprint.js +1 -1
  581. package/utils/entity.js +11 -1
  582. package/utils/field.js +26 -6
  583. package/utils/liquibase.js +5 -8
  584. package/utils/relationship.js +13 -3
  585. package/generators/client/templates/react/src/main/webapp/app/shared/error/error-boundary-route.spec.tsx.ejs +0 -33
  586. package/generators/client/templates/react/src/main/webapp/app/shared/error/error-boundary-route.tsx.ejs +0 -17
  587. package/generators/cypress/templates/cypress-audits.json.ejs +0 -32
  588. package/generators/cypress/templates/cypress.json.ejs +0 -46
  589. package/generators/docker-compose/templates/realm-config/jhipster-users-0.json.ejs +0 -61
  590. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/no-pagination-template.ejs +0 -81
  591. package/generators/entity-server/templates/src/main/java/package/repository/search/SortToSortBuilderListConverter.java.ejs +0 -25
  592. package/generators/maven/templates/.mvn/wrapper/MavenWrapperDownloader.java +0 -117
  593. package/generators/server/templates/.mvn/wrapper/MavenWrapperDownloader.java +0 -117
  594. package/generators/server/templates/couchbase/src/test/java/package/CouchbaseTestContainerExtension.java.ejs +0 -56
  595. package/generators/server/templates/src/main/docker/config/realm-config/jhipster-users-0.json.ejs +0 -61
  596. package/generators/server/templates/src/main/java/package/config/KafkaProperties.java.ejs +0 -68
  597. package/generators/server/templates/src/test/java/package/AbstractCassandraTest.java.ejs +0 -125
  598. package/generators/server/templates/src/test/java/package/AbstractNeo4jIT.java.ejs +0 -44
  599. package/generators/server/templates/src/test/java/package/MongoDbTestContainerExtension.java.ejs +0 -37
  600. package/generators/server/templates/src/test/java/package/ReactiveSqlTestContainerExtension.java.ejs +0 -79
  601. package/generators/server/templates/src/test/java/package/RedisTestContainerExtension.java.ejs +0 -44
  602. package/generators/server/templates/src/test/java/package/TestContainersSpringContextCustomizerFactory.java.ejs +0 -24
  603. package/generators/server/templates/src/test/resources/testcontainers/mariadb/my.cnf +0 -2
@@ -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) { _%>
@@ -57,17 +53,17 @@ import java.util.UUID;
57
53
  <%_ } _%>
58
54
 
59
55
  /**
60
- * Spring Data <%= officialDatabaseType %> reactive repository for the <%= persistClass %> entity.
56
+ * <%= springDataDescription %> repository for the <%= persistClass %> entity.
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 (relationshipsContainEagerLoad) { _%>
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 (relationshipsContainEagerLoad) { _%>
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
+ }
@@ -29,7 +29,7 @@ public class <%= entityClass %>SqlHelper {
29
29
 
30
30
  public static List<Expression> getColumns(Table table, String columnPrefix) {
31
31
  List<Expression> columns = new ArrayList<>();
32
- <%_ fields.forEach(function(field) {
32
+ <%_ fields.filter(field => !field.transient).forEach(function(field) {
33
33
  let col = field.fieldNameAsDatabaseColumn;
34
34
  _%>
35
35
  columns.add(Column.aliased("<%= col %>", table, columnPrefix + "_<%= col %>"));
@@ -39,7 +39,7 @@ public class <%= entityClass %>SqlHelper {
39
39
  <%_ }); _%>
40
40
 
41
41
  <%_ reactiveRegularEagerRelations.forEach(function(rel) { _%>
42
- columns.add(Column.aliased("<%= getColumnName(rel.relationshipName) %>_id", table, columnPrefix + "_<%= getColumnName(rel.relationshipName) %>_id"));
42
+ columns.add(Column.aliased("<%= rel.joinColumnNames[0] %>", table, columnPrefix + "_<%= rel.joinColumnNames[0] %>"));
43
43
  <%_ }); _%>
44
44
  return columns;
45
45
  }
@@ -62,7 +62,7 @@ public class <%= entityClass %>RowMapper implements BiFunction<Row, String, <%=
62
62
  @Override
63
63
  public <%= persistClass %> apply(Row row, String prefix) {
64
64
  <%= persistClass %> entity = new <%= persistClass %>();
65
- <%_ fields.forEach(function(field) {
65
+ <%_ fields.filter(field => !field.transient).forEach(function(field) {
66
66
  let fieldType = field.fieldType;
67
67
  if (field.blobContentTypeText) {
68
68
  fieldType = 'String';
@@ -73,7 +73,7 @@ public class <%= entityClass %>RowMapper implements BiFunction<Row, String, <%=
73
73
  entity.set<%= field.fieldInJavaBeanMethod %>(converter.fromRow(row, prefix + "_<%= field.fieldNameAsDatabaseColumn %>", <%= fieldType %>.class));
74
74
  <%_ }); _%>
75
75
  <%_ reactiveRegularEagerRelations.forEach(function(rel) { _%>
76
- entity.set<%= rel.relationshipNameCapitalized %>Id(converter.fromRow(row, prefix + "_<%= getColumnName(rel.relationshipName) %>_id", <%= rel.otherEntity.primaryKey.type %>.class));
76
+ entity.set<%= rel.relationshipNameCapitalized %>Id(converter.fromRow(row, prefix + "_<%= rel.joinColumnNames[0] %>", <%= rel.otherEntity.primaryKey.type %>.class));
77
77
  <%_ }); _%>
78
78
  return entity;
79
79
  }
@@ -19,6 +19,7 @@
19
19
  package <%= entityAbsolutePackage %>.repository.search;
20
20
 
21
21
  import <%= entityAbsolutePackage %>.domain.<%= persistClass %>;
22
+ import <%= entityAbsolutePackage %>.repository.<%= persistClass %>Repository;
22
23
 
23
24
  <%_ if (!paginationNo) { _%>
24
25
  <%_ if (!reactive) { _%>
@@ -27,6 +28,7 @@ import java.util.stream.Collectors;
27
28
 
28
29
  import org.springframework.data.domain.Page;
29
30
  import org.springframework.data.domain.PageImpl;
31
+ import org.springframework.data.elasticsearch.core.SearchHits;
30
32
  <%_ } _%>
31
33
  import org.springframework.data.domain.Pageable;
32
34
  import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
@@ -34,7 +36,6 @@ import org.elasticsearch.search.sort.SortBuilder;
34
36
  import java.util.List;
35
37
  import org.springframework.data.domain.PageRequest;
36
38
 
37
-
38
39
  <%_ } _%>
39
40
  <%_ if (reactive) { _%>
40
41
  import org.springframework.data.elasticsearch.core.ReactiveElasticsearchTemplate;
@@ -42,9 +43,13 @@ import org.springframework.data.elasticsearch.core.ReactiveElasticsearchTemplate
42
43
  import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
43
44
  <%_ } _%>
44
45
  import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
46
+ import org.springframework.data.elasticsearch.core.query.Query;
45
47
  import org.springframework.data.elasticsearch.core.SearchHit;
46
48
  import org.springframework.data.elasticsearch.repository.<% if (reactive) {%>Reactive<% } %>ElasticsearchRepository;
47
-
49
+ import org.springframework.scheduling.annotation.Async;
50
+ import org.springframework.transaction.annotation.Isolation;
51
+ import org.springframework.transaction.annotation.Propagation;
52
+ import org.springframework.transaction.annotation.Transactional;
48
53
  <%_ if (reactive) { _%>
49
54
  import reactor.core.publisher.Flux;
50
55
  <%_ } else { _%>
@@ -65,7 +70,9 @@ public interface <%= entityClass %>SearchRepository extends <% if (reactive) {%>
65
70
  <%_ if (reactive) { _%>
66
71
 
67
72
  interface <%= entityClass %>SearchRepositoryInternal {
68
- Flux<<%= entityClass %>> search(String query<% if (!paginationNo) { %>, Pageable pageable<% } %>);
73
+ Flux<<%= persistClass %>> search(String query<% if (!paginationNo) { %>, Pageable pageable<% } %>);
74
+
75
+ Flux<<%= persistClass %>> search(Query query);
69
76
  }
70
77
 
71
78
  class <%= entityClass %>SearchRepositoryInternalImpl implements <%= entityClass %>SearchRepositoryInternal {
@@ -77,21 +84,18 @@ class <%= entityClass %>SearchRepositoryInternalImpl implements <%= entityClass
77
84
  }
78
85
 
79
86
  @Override
80
- public Flux<<%= entityClass %>> search(String query<% if (!paginationNo) { %>, Pageable pageable<% } %>) {
87
+ public Flux<<%= persistClass %>> search(String query<% if (!paginationNo) { %>, Pageable pageable<% } %>) {
88
+ NativeSearchQuery nativeSearchQuery = new NativeSearchQuery(queryStringQuery(query));
81
89
  <%_ if (!paginationNo) { _%>
82
- List<SortBuilder<?>> builders = new SortToSortBuilderListConverter().convert(pageable.getSort());
83
-
84
- NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder().withQuery(queryStringQuery(query))
85
- .withPageable(PageRequest.of(pageable.getPageNumber(), pageable.getPageSize()));
86
-
87
- queryBuilder.withSorts(builders);
90
+ nativeSearchQuery.setPageable(pageable);
91
+ <%_ }_%>
92
+ return search(nativeSearchQuery);
93
+ }
88
94
 
89
- NativeSearchQuery nativeSearchQuery = queryBuilder.build();
90
- <%_ } else { _%>
91
- NativeSearchQuery nativeSearchQuery = new NativeSearchQuery(queryStringQuery(query));
92
- <%_ } _%>
95
+ @Override
96
+ public Flux<<%= persistClass %>> search(Query query) {
93
97
  return reactiveElasticsearchTemplate
94
- .search(nativeSearchQuery, <%= entityClass %>.class)
98
+ .search(query, <%= persistClass %>.class)
95
99
  .map(SearchHit::getContent);
96
100
  }
97
101
  }
@@ -99,40 +103,60 @@ class <%= entityClass %>SearchRepositoryInternalImpl implements <%= entityClass
99
103
 
100
104
  interface <%= entityClass %>SearchRepositoryInternal {
101
105
  <%_ if (paginationNo) { _%>
102
- Stream<<%= entityClass %>> search(String query);
106
+ Stream<<%= persistClass %>> search(String query);
107
+
108
+ Stream<<%= persistClass %>> search(Query query);
103
109
  <%_ } else { _%>
104
- Page<<%= entityClass %>> search(String query, Pageable pageable);
110
+ Page<<%= persistClass %>> search(String query, Pageable pageable);
111
+
112
+ Page<<%= persistClass %>> search(Query query);
105
113
  <%_ } _%>
114
+
115
+ void index(<%= persistClass %> entity);
106
116
  }
107
117
 
108
118
  class <%= entityClass %>SearchRepositoryInternalImpl implements <%= entityClass %>SearchRepositoryInternal {
109
119
 
110
120
  private final ElasticsearchRestTemplate elasticsearchTemplate;
121
+ private final <%= entityClass %>Repository repository;
111
122
 
112
- <%= entityClass %>SearchRepositoryInternalImpl(ElasticsearchRestTemplate elasticsearchTemplate) {
123
+ <%= entityClass %>SearchRepositoryInternalImpl(ElasticsearchRestTemplate elasticsearchTemplate, <%= entityClass %>Repository repository) {
113
124
  this.elasticsearchTemplate = elasticsearchTemplate;
125
+ this.repository = repository;
114
126
  }
115
127
 
116
128
  <%_ if (paginationNo) { _%>
117
129
  @Override
118
- public Stream<<%= entityClass %>> search(String query) {
130
+ public Stream<<%= persistClass %>> search(String query) {
119
131
  NativeSearchQuery nativeSearchQuery = new NativeSearchQuery(queryStringQuery(query));
132
+ return search(nativeSearchQuery);
133
+ }
134
+
135
+ @Override
136
+ public Stream<<%= persistClass %>> search(Query query) {
120
137
  return elasticsearchTemplate
121
- .search(nativeSearchQuery, <%= entityClass %>.class)
138
+ .search(query, <%= persistClass %>.class)
122
139
  .map(SearchHit::getContent)
123
140
  .stream();
124
141
  }
125
142
  <%_ } else { _%>
126
143
  @Override
127
- public Page<<%= entityClass %>> search(String query, Pageable pageable) {
144
+ public Page<<%= persistClass %>> search(String query, Pageable pageable) {
128
145
  NativeSearchQuery nativeSearchQuery = new NativeSearchQuery(queryStringQuery(query));
129
- nativeSearchQuery.setPageable(pageable);
130
- List<<%= entityClass %>> hits = elasticsearchTemplate.search(nativeSearchQuery, <%= entityClass %>.class).map(SearchHit::getContent)
131
- .stream()
132
- .collect(Collectors.toList());
146
+ return search(nativeSearchQuery.setPageable(pageable));
147
+ }
133
148
 
134
- return new PageImpl<>(hits, pageable, hits.size());
149
+ @Override
150
+ public Page<<%= persistClass %>> search(Query query) {
151
+ SearchHits<<%= persistClass %>> searchHits = elasticsearchTemplate.search(query, <%= persistClass %>.class);
152
+ List<<%= persistClass %>> hits = searchHits.map(SearchHit::getContent).stream().collect(Collectors.toList());
153
+ return new PageImpl<>(hits, query.getPageable(), searchHits.getTotalHits());
135
154
  }
136
155
  <%_ } _%>
156
+
157
+ @Override
158
+ public void index(<%= persistClass %> entity) {
159
+ repository.find<% if (implementsEagerLoadApis) { %>OneWithEagerRelationships<% } else { %>ById<% } %>(entity.get<%= primaryKey.nameCapitalized %>()).ifPresent(elasticsearchTemplate::save);
160
+ }
137
161
  }
138
162
  <%_ } _%>
@@ -78,7 +78,7 @@ public class <%= serviceClassName %> extends QueryService<<%= persistClass %>> {
78
78
  */
79
79
  @Transactional(readOnly = true)
80
80
  public List<<%= instanceType %>> findByCriteria(<%= criteria %> criteria) {
81
- log.debug("find by criteria : {}", criteria);
81
+ log.debug("find by criteria : {}", criteria.toString().replaceAll("[\n\r\t]", "_"));
82
82
  final Specification<<%= persistClass %>> specification = createSpecification(criteria);
83
83
  <%_ if (dtoMapstruct) { _%>
84
84
  return <%= entityListToDto %>(<%= repository %>.findAll(specification));
@@ -95,7 +95,7 @@ public class <%= serviceClassName %> extends QueryService<<%= persistClass %>> {
95
95
  */
96
96
  @Transactional(readOnly = true)
97
97
  public Page<<%= instanceType %>> findByCriteria(<%= criteria %> criteria, Pageable page) {
98
- log.debug("find by criteria : {}, page: {}", criteria, page);
98
+ log.debug("find by criteria : {}, page: {}", criteria.toString().replaceAll("[\n\r\t]", "_"), page);
99
99
  final Specification<<%= persistClass %>> specification = createSpecification(criteria);
100
100
  <%_ if (dtoMapstruct) { _%>
101
101
  return <%= repository %>.findAll(specification, page)
@@ -112,7 +112,7 @@ public class <%= serviceClassName %> extends QueryService<<%= persistClass %>> {
112
112
  */
113
113
  @Transactional(readOnly = true)
114
114
  public long countByCriteria(<%= criteria %> criteria) {
115
- log.debug("count by criteria : {}", criteria);
115
+ log.debug("count by criteria : {}", criteria.toString().replaceAll("[\n\r\t]", "_"));
116
116
  final Specification<<%= persistClass %>> specification = createSpecification(criteria);
117
117
  return <%= repository %>.count(specification);
118
118
  }
@@ -30,7 +30,7 @@ import <%= entityAbsolutePackage %>.service.dto.<%= dtoClass %>;
30
30
  <%_ } else { _%>
31
31
  import <%= entityAbsolutePackage %>.domain.<%= persistClass %>;
32
32
  <%_ } _%>
33
- <%_ if (!paginationNo || relationshipsContainEagerLoad) { _%>
33
+ <%_ if (!paginationNo || implementsEagerLoadApis) { _%>
34
34
 
35
35
  <%_ if (!reactive) { _%>
36
36
  import org.springframework.data.domain.Page;
@@ -65,6 +65,14 @@ public interface <%= entityClass %>Service {
65
65
  */
66
66
  <% if (reactive) { %>Mono<<% } %><%= instanceType %><% if (reactive) { %>><% } %> save(<%= instanceType %> <%= instanceName %>);
67
67
 
68
+ /**
69
+ * Updates a <%= entityInstance %>.
70
+ *
71
+ * @param <%= instanceName %> the entity to update.
72
+ * @return the persisted entity.
73
+ */
74
+ <% if (reactive) { %>Mono<<% } %><%= instanceType %><% if (reactive) { %>><% } %> update(<%= instanceType %> <%= instanceName %>);
75
+
68
76
  /**
69
77
  * Partially updates a <%= entityInstance %>.
70
78
  *
@@ -90,7 +98,7 @@ public interface <%= entityClass %>Service {
90
98
  <%= listOrFlux %><<%= instanceType %>> findAllWhere<%= relationship.relationshipNameCapitalized %>IsNull();
91
99
  <%_ } } _%>
92
100
 
93
- <%_ if (relationshipsContainEagerLoad) { _%>
101
+ <%_ if (implementsEagerLoadApis) { _%>
94
102
  /**
95
103
  * Get all the <%= entityInstancePlural %> with eager load of many-to-many relationships.
96
104
  *
@@ -51,7 +51,7 @@ import <%= entityAbsolutePackage %>.service.mapper.<%= entityClass %>Mapper;
51
51
  import org.slf4j.Logger;
52
52
  import org.slf4j.LoggerFactory;
53
53
 
54
- <%_ if (!paginationNo || relationshipsContainEagerLoad) { _%>
54
+ <%_ if (!paginationNo || implementsEagerLoadApis) { _%>
55
55
  <%_ if (!reactive) { _%>
56
56
  import org.springframework.data.domain.Page;
57
57
  <%_ } _%>
@@ -112,7 +112,23 @@ public class <%= serviceClassName %><% if (serviceImpl) { %> implements <%= enti
112
112
  <%_ } _%>
113
113
  public <% if (reactive) { %>Mono<<% } %><%= instanceType %><% if (reactive) { %>><% } %> save(<%= instanceType %> <%= instanceName %>) {
114
114
  log.debug("Request to save <%= entityClass %> : {}", <%= instanceName %>);
115
- <%- include('/partials/save_template', {asEntity, asDto, viaService: false, returnDirectly: true, isUsingMapsId: isUsingMapsId, mapsIdAssoc: mapsIdAssoc, isController: false}); -%>
115
+ <%- include('/partials/save_template', {asEntity, asDto, viaService: false, returnDirectly: true, isUsingMapsId: isUsingMapsId, mapsIdAssoc: mapsIdAssoc, isController: false, isPersisted: false}); -%>
116
+ }
117
+
118
+ <%_ if (!serviceImpl) { _%>
119
+ /**
120
+ * Update a <%= entityInstance %>.
121
+ *
122
+ * @param <%= instanceName %> the entity to save.
123
+ * @return the persisted entity.
124
+ */
125
+ <%_ } _%>
126
+ <%_ if (serviceImpl) { _%>
127
+ @Override
128
+ <%_ } _%>
129
+ public <% if (reactive) { %>Mono<<% } %><%= instanceType %><% if (reactive) { %>><% } %> update(<%= instanceType %> <%= instanceName %>) {
130
+ log.debug("Request to save <%= entityClass %> : {}", <%= instanceName %>);
131
+ <%- include('/partials/update_template', {updatableEntity, viaService: false, returnDirectly: true, isUsingMapsId: isUsingMapsId, mapsIdAssoc: mapsIdAssoc, isController: false, isPersisted: requiresPersistableImplementation}); -%>
116
132
  }
117
133
 
118
134
  <%_ if (!serviceImpl) { _%>
@@ -150,16 +166,16 @@ public class <%= serviceClassName %><% if (serviceImpl) { %> implements <%= enti
150
166
  public <% if (paginationNo) { %><%= listOrFlux %><% } else { %><%= pageOrFlux %><% } %><<%= instanceType %>> findAll(<% if (!paginationNo) { %>Pageable pageable<% } %>) {
151
167
  log.debug("Request to get all <%= entityClassPlural %>");
152
168
  <%_ if (paginationNo) { _%>
153
- return <%= entityInstance %>Repository.<% if (relationshipsContainEagerLoad) { %>findAllWithEagerRelationships<% } else { %>findAll<% } %>()<% if (dtoMapstruct) { %><% if (!reactive) { %>.stream()<% } %>
169
+ return <%= entityInstance %>Repository.findAll()<% if (dtoMapstruct) { %><% if (!reactive) { %>.stream()<% } %>
154
170
  .map(<%= entityToDtoReference %>)<% if (!reactive) { %>
155
171
  .collect(Collectors.toCollection(LinkedList::new))<% } } %>;
156
172
  <%_ } else { _%>
157
- return <%= entityInstance %>Repository.findAll<% if (reactive) { %>By<% } %>(pageable)<% if (dto !== 'mapstruct') { %>;<% } else { %>
173
+ return <%= entityInstance %>Repository.findAll<% if (reactive) { %>By<% } %>(pageable)<% if (!dtoMapstruct) { %>;<% } else { %>
158
174
  .map(<%= entityToDtoReference %>);<% } %>
159
175
  <%_ } _%>
160
176
  }
161
177
 
162
- <%_ if (relationshipsContainEagerLoad) { _%>
178
+ <%_ if (implementsEagerLoadApis) { _%>
163
179
 
164
180
  <%_ if (!serviceImpl) { _%>
165
181
  /**
@@ -213,7 +229,7 @@ public class <%= serviceClassName %><% if (serviceImpl) { %> implements <%= enti
213
229
  @Transactional(readOnly = true)
214
230
  <%_ } _%>
215
231
  public <%= optionalOrMono %><<%= instanceType %>> findOne(<%= primaryKey.type %> id) {
216
- log.debug("Request to get <%= entityClass %> : {}", id);<%- include('../../common/get_template', {asEntity, asDto, viaService: false, returnDirectly:true, relationshipsContainEagerLoad}); -%>
232
+ log.debug("Request to get <%= entityClass %> : {}", id);<%- include('../../common/get_template', {asEntity, asDto, viaService: false, returnDirectly:true, implementsEagerLoadApis}); -%>
217
233
  }
218
234
 
219
235
  <%_ if (!serviceImpl) { _%>
@@ -19,30 +19,34 @@
19
19
  package <%= entityAbsolutePackage %>.service.mapper;
20
20
 
21
21
  <%_
22
- let existingMappings = [];
23
- let uuidMapMethod = dtoReferences.some(reference => reference.valueReference && reference.valueReference.field && reference.valueReference.field.fieldTypeUUID);
24
- let byteMapMethod = dtoReferences.some(reference => reference.valueReference && reference.valueReference.field && reference.valueReference.field.fieldTypeBytes);
25
- for (reference of dtoReferences) {
26
- // if the entity is mapped twice, we should implement the mapping once
27
- if (reference.relationship && !reference.relationship.otherEntity.embedded && !existingMappings.includes(reference.name) && asEntity(reference.relationship.otherEntityNameCapitalized) !== persistClass) {
28
- existingMappings.push(reference.relationship.otherEntity.entityNameCapitalized);
29
- }
30
- }
22
+ const uuidMapMethod = dtoReferences.some(reference => reference.valueReference && reference.valueReference.field && reference.valueReference.field.fieldTypeUUID);
23
+ const byteMapMethod = dtoReferences.some(reference => reference.valueReference && reference.valueReference.field && reference.valueReference.field.fieldTypeBytes);
24
+ const dtoRelationships = dtoReferences.filter(reference => reference.relationship && !reference.relationship.otherEntity.embedded).map(reference => reference.relationship);
25
+ let otherEntitiesFields = otherEntities
26
+ .filter(otherEntity => dtoRelationships.some(relationship => relationship.otherEntity === otherEntity))
27
+ .map(otherEntity =>
28
+ dtoRelationships
29
+ .filter(relationship => relationship.otherEntity == otherEntity)
30
+ .map(({relatedField, collection}) => ({otherEntity, relatedField, collection}))
31
+ )
32
+ .flat();
33
+ otherEntitiesFields.forEach(a => {
34
+ a.collection = a.collection || otherEntitiesFields.some(b => a.otherEntity === b.otherEntity && a.relatedField === b.relatedField && b.collection == true)
35
+ });
36
+ otherEntitiesFields = _.uniqWith(otherEntitiesFields, (a, b) => a.otherEntity === b.otherEntity && a.collection === b.collection && a.relatedField === b.relatedField);
31
37
  _%>
32
38
 
33
- <%_ if (dtoReferences.some(r => r.relationship &&
34
- r.relationship.otherRelationship &&
35
- r.relationship.otherRelationship.reference.collection &&
36
- r.relationship.relationshipManyToMany
37
- ) || otherDtoReferences.some(r => r.collection)) { _%>
39
+ <%_ if (dtoRelationships.some(r => r.collection)) { _%>
38
40
  import java.util.Set;
41
+ import java.util.stream.Collectors;
39
42
  <%_ } _%>
40
43
 
41
44
  import <%= entityAbsoluteClass %>;
42
45
  import <%= entityAbsolutePackage %>.service.dto.<%= dtoClass %>;
43
46
 
44
- <%_ for (const otherEntity of _.uniq(dtoReferences.filter(ref => ref.relationship).map(ref => ref.relationship.otherEntity).filter(otherEntity => otherEntity.entityPackage !== entityPackage))) { _%>
45
- import <%= `${otherEntity.entityAbsolutePackage}.service.mapper.${otherEntity.entityClass}Mapper` %>;
47
+ <%_ for (const otherEntity of _.uniq(dtoRelationships.map(relationship => relationship.otherEntity).filter(otherEntity => otherEntity !== entity))) { _%>
48
+ import <%= otherEntity.entityAbsoluteClass %>;
49
+ import <%= otherEntity.entityAbsolutePackage %>.service.dto.<%= otherEntity.dtoClass %>;
46
50
  <%_ } _%>
47
51
 
48
52
  import org.mapstruct.*;
@@ -55,100 +59,67 @@ import java.util.UUID;
55
59
  /**
56
60
  * Mapper for the entity {@link <%= persistClass %>} and its DTO {@link <%= dtoClass %>}.
57
61
  */
58
- @Mapper(componentModel = "spring", uses = {<%= [...new Set(existingMappings.map(otherEntityNameCapitalized => otherEntityNameCapitalized + 'Mapper.class'))].join(', ') %>})
62
+ @Mapper(componentModel = "spring")
59
63
  public interface <%= entityClass %>Mapper extends EntityMapper<<%= dtoClass %>, <%= persistClass %>> {
60
- <%_ /***** Basic dto mapping *****/
61
- if (!embedded) {
62
- var renMapAnotEnt = false; //Render Mapping Annotation during Entity to DTO conversion?
63
- for (reference of dtoReferences.filter(reference => reference.relationship && !reference.relationship.otherEntity.embedded)) {
64
+ <%_ if (!embedded) { _%>
65
+ <%_ var renMapAnotEnt = false; //Render Mapping Annotation during Entity to DTO conversion? _%>
66
+ <%_ for (relationship of dtoRelationships) { _%>
67
+ <%_
64
68
  renMapAnotEnt = true;
65
- let qualifiedByName = reference.relationship.otherEntityField;
66
- qualifiedByName = qualifiedByName + (reference.collection ? 'Set' : ''); _%>
67
- @Mapping(target = "<%= reference.name %>", source = "<%= reference.name %>", qualifiedByName="<%= qualifiedByName %>")
68
- <%_ } _%>
69
- <%_ for (reference of dtoReferences.filter(reference => reference.field && reference.field.mapstructExpression)) {
69
+ let qualifiedByName = relationship.otherEntity.entityInstance + _.upperFirst(relationship.otherEntityField);
70
+ qualifiedByName = qualifiedByName + (relationship.collection ? 'Set' : '');
71
+ _%>
72
+ @Mapping(target = "<%= relationship.propertyName %>", source = "<%= relationship.propertyName %>", qualifiedByName="<%= qualifiedByName %>")
73
+ <%_ } _%>
74
+ <%_ for (const field of fields.filter(field => field.mapstructExpression)) {
70
75
  renMapAnotEnt = true; _%>
71
- @Mapping( target = "<%= reference.name %>", expression = "<%- reference.field.mapstructExpression %>")
72
- <%_ } _%>
73
- <%_ if (renMapAnotEnt) { _%>
76
+ @Mapping( target = "<%= field.propertyName %>", expression = "<%- field.mapstructExpression %>")
77
+ <%_ } _%>
78
+ <%_ if (renMapAnotEnt) { _%>
74
79
  <%= dtoClass %> toDto(<%= persistClass %> s);
75
- <%_ } %>
76
- <%_ } %>
77
- <%_ /***** Id mapping *****/
78
- const otherIdReferences = otherDtoReferences.filter(r => !r.relatedReference || r.relatedReference.id);
79
- if (!embedded && otherIdReferences.length > 0) {
80
- if (otherIdReferences.some(r => !r.collection)) { _%>
81
-
82
- @Named("<%= primaryKey.name %>")
83
- @BeanMapping(ignoreByDefault = true)
84
- <%_ let renMapAnotEnt = false; //Render Mapping Annotation during Entity to DTO conversion?
85
- for (reference of dtoReferences.filter(reference => reference.id)) {
86
- renMapAnotEnt = true; _%>
87
- @Mapping(target = "<%= reference.name %>", source = "<%= reference.name %>")
88
- <%_ } _%>
89
- <%_ if (renMapAnotEnt) { _%>
90
- <%= dtoClass %> toDtoId(<%= persistClass %> <%= persistInstance %>);
91
- <%_ } _%>
92
80
  <%_ } _%>
93
- <%_ if (otherIdReferences.some(r => r.collection)) { _%>
94
81
 
95
- @Named("<%= primaryKey.name %>Set")
96
- @BeanMapping(ignoreByDefault = true)
97
- <%_ let renMapAnotEnt = false; //Render Mapping Annotation during Entity to DTO conversion?
98
- for (reference of dtoReferences.filter(reference => reference.id)) {
99
- renMapAnotEnt = true; _%>
100
- @Mapping(target = "<%= reference.name %>", source = "<%= reference.name %>")
101
- <%_ } _%>
102
- <%_ if (renMapAnotEnt === true) { _%>
103
- Set<<%= dtoClass %>> toDtoIdSet(Set<<%= persistClass %>> <%= persistInstance %>);
82
+ <%_ var renMapAnotDto = false; //Render Mapping Annotation during DTO to Entity conversion? _%>
83
+ <%_ if(primaryKey.ids.length > 1) { _%>
84
+ <%_ renMapAnotDto = true; _%>
85
+ <%_ for (const id of primaryKey.ids) { _%>
86
+ @Mapping(target = "id.<%= id.name %>", source = "<%= id.nameDotted %>")
104
87
  <%_ } _%>
105
88
  <%_ } _%>
106
- <%_ } _%>
107
- <%_ if (!embedded) {
108
- // DTO -> entity mapping
109
- var renMapAnotDto = false; //Render Mapping Annotation during DTO to Entity conversion?
110
- if(primaryKey.ids.length > 1) {
111
- renMapAnotDto = true;
112
- primaryKey.ids.forEach(id => { _%>
113
-
114
- @Mapping(target = "id.<%= id.name %>", source = "<%= id.nameDotted %>")
115
- <%_ })
116
- }
117
- for (reference of dtoReferences.filter(reference => reference.relationship)) {
118
- if (reference.owned === false) {
119
- renMapAnotDto = true; _%>
120
- @Mapping(target = "<%= reference.name %>", ignore = true)
89
+ <%_ for (relationship of dtoRelationships) { _%>
90
+ <%_ if (!relationship.ownerSide) { _%>
91
+ <%_ renMapAnotDto = true; _%>
92
+ @Mapping(target = "<%= relationship.propertyName %>", ignore = true)
121
93
  <%_ }
122
- if (reference.collection && fluentMethods) {
94
+ if (relationship.collection && fluentMethods) {
123
95
  renMapAnotDto = true; _%>
124
- @Mapping(target = "remove<%= reference.relationship.relationshipNameCapitalized %>", ignore = true)
96
+ @Mapping(target = "remove<%= relationship.relationshipNameCapitalized %>", ignore = true)
125
97
  <%_ } _%>
126
98
  <%_ } _%>
127
99
  <%_ if (renMapAnotDto) { _%>
128
100
  <%= persistClass %> toEntity(<%= dtoClass %> <%= dtoInstance %>);
129
101
  <%_ } _%>
130
- <%_ /***** Add filtered backreference *****/
131
- const addedMappers = [];
132
- for (const otherReference of otherDtoReferences.filter(r => r.relatedReference && !r.relatedReference.id)) {
133
- const reference = otherReference.relationship.otherRelationship && otherReference.relationship.otherRelationship.reference;
134
- const collection = otherReference.collection;
135
- const mapperName = otherReference.relationship.otherEntityField + (collection ? 'Set' : '');
136
- if (addedMappers.includes(mapperName)) continue;
137
- addedMappers.push(mapperName);
138
- const backReferenceDtoClass = collection ? `Set<${dtoClass}>` : dtoClass;
139
- const backReferenceEntityClass = collection ? `Set<${persistClass}>` : persistClass; _%>
102
+ <%_ for (const {otherEntity, relatedField, collection} of otherEntitiesFields) { _%>
103
+ <%_ const mapperName = otherEntity.entityInstance + _.upperFirst(relatedField.propertyName); _%>
140
104
 
141
105
  @Named("<%= mapperName %>")
142
106
  @BeanMapping(ignoreByDefault = true)
143
- <%_ dtoReferences.filter(r => r.id && r !== reference).forEach(r => { _%>
144
- @Mapping(target = "<%= r.name %>", source = "<%= r.name %>")
145
- <%_ }); _%>
146
- <%_ if (otherReference.relationship.relatedField && !otherReference.relationship.relatedField.id) { _%>
147
- @Mapping(target = "<%= otherReference.relationship.relatedField.reference.name %>", source = "<%= otherReference.relationship.relatedField.reference.name %>")
107
+ <%_ for (const field of otherEntity.primaryKey.fields) { _%>
108
+ @Mapping(target = "<%= field.propertyName %>", source = "<%= field.propertyName %>")
148
109
  <%_ } _%>
149
- <%- backReferenceDtoClass %> toDto<%= _.upperFirst(mapperName) %>(<%- backReferenceEntityClass %> <%= persistInstance %>);
150
- <%_ } _%>
110
+ <%_ if (!relatedField.id) { _%>
111
+ @Mapping(target = "<%= relatedField.propertyName %>", source = "<%= relatedField.propertyName %>")
112
+ <%_ } _%>
113
+ <%- otherEntity.dtoClass %> toDto<%= _.upperFirst(mapperName) %>(<%- otherEntity.persistClass %> <%= otherEntity.persistInstance %>);
114
+ <%_ if (collection) { %>
115
+ <%_ const collectionMapperName = otherEntity.entityInstance + _.upperFirst(relatedField.propertyName) + 'Set'; _%>
151
116
 
117
+ @Named("<%= collectionMapperName %>")
118
+ default Set<<%- otherEntity.dtoClass %>> toDto<%= _.upperFirst(mapperName) %>Set(Set<<%- otherEntity.persistClass %>> <%= otherEntity.persistInstance %>) {
119
+ return <%= otherEntity.persistInstance %>.stream().map(this:: toDto<%= _.upperFirst(mapperName) %>).collect(Collectors.toSet());
120
+ }
121
+ <%_ } _%>
122
+ <%_ } _%>
152
123
  <%_ if (uuidMapMethod) { _%>
153
124
 
154
125
  default String map(UUID value) {