generator-jhipster 7.6.0 → 7.7.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 (310) hide show
  1. package/README.md +1 -3
  2. package/cli/commands.js +3 -0
  3. package/cli/environment-builder.js +53 -18
  4. package/cli/import-jdl.js +3 -0
  5. package/cli/index.mjs +20 -0
  6. package/cli/jhipster.js +19 -11
  7. package/cli/program.js +94 -38
  8. package/generators/app/esm.mjs +1 -3
  9. package/generators/app/index.js +1 -16
  10. package/generators/aws/esm.mjs +1 -3
  11. package/generators/azure-app-service/esm.mjs +1 -3
  12. package/generators/azure-spring-cloud/esm.mjs +1 -3
  13. package/generators/base/esm.mjs +1 -3
  14. package/generators/bootstrap/esm.mjs +1 -3
  15. package/generators/bootstrap/index.js +36 -86
  16. package/generators/bootstrap-application/esm.mjs +19 -0
  17. package/generators/bootstrap-application/generator.mjs +353 -0
  18. package/generators/bootstrap-application/index.mjs +19 -0
  19. package/generators/ci-cd/esm.mjs +1 -3
  20. package/generators/ci-cd/prompts.js +1 -1
  21. package/generators/ci-cd/templates/github-actions.yml.ejs +2 -2
  22. package/generators/client/esm.mjs +5 -3
  23. package/generators/client/files-angular.js +9 -0
  24. package/generators/client/files-common.js +8 -7
  25. package/generators/client/files-vue.js +7 -6
  26. package/generators/client/index.js +2 -1
  27. package/generators/client/templates/angular/angular.json.ejs +1 -1
  28. package/generators/client/templates/angular/package.json +25 -22
  29. package/generators/client/templates/angular/package.json.ejs +5 -1
  30. package/generators/client/templates/angular/src/main/webapp/app/account/activate/activate.component.html.ejs +1 -1
  31. package/generators/client/templates/angular/src/main/webapp/app/account/password/password.component.html.ejs +7 -7
  32. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/finish/password-reset-finish.component.html.ejs +5 -5
  33. package/generators/client/templates/angular/src/main/webapp/app/account/password-reset/init/password-reset-init.component.html.ejs +3 -3
  34. package/generators/client/templates/angular/src/main/webapp/app/account/register/register.component.html.ejs +10 -10
  35. package/generators/client/templates/angular/src/main/webapp/app/account/settings/settings.component.html.ejs +8 -8
  36. package/generators/client/templates/angular/src/main/webapp/app/admin/configuration/configuration.component.html.ejs +2 -2
  37. package/generators/client/templates/angular/src/main/webapp/app/admin/gateway/gateway.component.html.ejs +5 -5
  38. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.html.ejs +1 -1
  39. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.spec.ts.ejs +2 -2
  40. package/generators/client/templates/angular/src/main/webapp/app/admin/health/health.component.ts.ejs +2 -2
  41. package/generators/client/templates/angular/src/main/webapp/app/admin/health/modal/health-modal.component.html.ejs +6 -6
  42. package/generators/client/templates/angular/src/main/webapp/app/admin/logs/logs.component.html.ejs +51 -49
  43. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-cache/metrics-cache.component.html.ejs +16 -16
  44. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-datasource/metrics-datasource.component.html.ejs +32 -32
  45. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-endpoints-requests/metrics-endpoints-requests.component.html.ejs +4 -4
  46. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-garbagecollector/metrics-garbagecollector.component.html.ejs +18 -18
  47. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.html.ejs +12 -12
  48. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-modal-threads/metrics-modal-threads.component.ts.ejs +4 -4
  49. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-request/metrics-request.component.html.ejs +4 -4
  50. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/blocks/metrics-system/metrics-system.component.html.ejs +8 -8
  51. package/generators/client/templates/angular/src/main/webapp/app/admin/metrics/metrics.component.html.ejs +1 -1
  52. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/delete/user-management-delete-dialog.component.html.ejs +1 -1
  53. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/detail/user-management-detail.component.html.ejs +4 -4
  54. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/list/user-management.component.html.ejs +5 -5
  55. package/generators/client/templates/angular/src/main/webapp/app/admin/user-management/update/user-management-update.component.html.ejs +11 -11
  56. package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.html.ejs +4 -2
  57. package/generators/client/templates/angular/src/main/webapp/app/layouts/navbar/navbar.component.scss.ejs +0 -6
  58. package/generators/client/templates/angular/src/main/webapp/app/layouts/profiles/page-ribbon.component.scss.ejs +0 -6
  59. package/generators/client/templates/angular/src/main/webapp/app/login/login.component.html.ejs +3 -3
  60. package/generators/client/templates/angular/src/main/webapp/content/scss/_bootstrap-variables.scss.ejs +5 -5
  61. package/generators/client/templates/angular/src/main/webapp/content/scss/global.scss.ejs +29 -0
  62. package/generators/client/templates/angular/src/main/webapp/content/scss/vendor.scss.ejs +0 -4
  63. package/generators/client/templates/angular/webpack/webpack.custom.js.ejs +19 -0
  64. package/generators/client/templates/common/package.json +2 -2
  65. package/generators/client/templates/common/src/main/webapp/swagger-ui/index.html.ejs +1 -7
  66. package/generators/client/templates/react/package.json +33 -33
  67. package/generators/client/templates/vue/package.json +23 -23
  68. package/generators/client/templates/vue/src/main/webapp/app/core/jhi-navbar/jhi-navbar.component.ts.ejs +3 -3
  69. package/generators/client/templates/vue/src/main/webapp/app/entities/user/user.service.ts.ejs +0 -0
  70. package/generators/client/templates/vue/src/main/webapp/app/main.ts.ejs +29 -1
  71. package/generators/client/templates/vue/src/main/webapp/app/shared/config/axios-interceptor.ts.ejs +2 -2
  72. package/generators/client/templates/vue/src/main/webapp/app/shared/config/config.ts.ejs +0 -4
  73. package/generators/cloudfoundry/esm.mjs +1 -3
  74. package/generators/common/esm.mjs +2 -3
  75. package/generators/common/files.js +1 -2
  76. package/generators/common/index.js +6 -0
  77. package/generators/common/templates/.husky/{pre-commit → pre-commit.ejs} +4 -0
  78. package/generators/common/templates/README.md.jhi.ejs +3 -1
  79. package/generators/common/templates/package.json +3 -3
  80. package/generators/common/templates/sonar-project.properties.ejs +1 -1
  81. package/generators/cypress/esm.mjs +2 -3
  82. package/generators/cypress/files.js +2 -1
  83. package/generators/cypress/templates/src/test/javascript/cypress/integration/account/settings-page.spec.ts.ejs +18 -14
  84. package/generators/database-changelog/esm.mjs +1 -3
  85. package/generators/database-changelog/index.js +1 -1
  86. package/generators/database-changelog-liquibase/esm.mjs +2 -3
  87. package/generators/docker-compose/esm.mjs +1 -3
  88. package/generators/entities/esm.mjs +1 -3
  89. package/generators/entities/index.js +2 -2
  90. package/generators/entities-client/esm.mjs +1 -3
  91. package/generators/entity/esm.mjs +1 -3
  92. package/generators/entity/index.js +11 -15
  93. package/generators/entity/prompts.js +4 -1
  94. package/generators/entity-client/esm.mjs +2 -3
  95. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/delete/entity-management-delete-dialog.component.html.ejs +1 -1
  96. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/detail/entity-management-detail.component.html.ejs +2 -2
  97. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/list/entity-management.component.html.ejs +20 -21
  98. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.html.ejs +14 -16
  99. package/generators/entity-client/templates/angular/src/main/webapp/app/entities/update/entity-management-update.component.ts.ejs +2 -2
  100. package/generators/entity-client/templates/common/src/test/javascript/cypress/integration/entity/entity.spec.ts.ejs +1 -1
  101. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-reducer.spec.ts.ejs +1 -1
  102. package/generators/entity-client/templates/react/src/main/webapp/app/entities/entity-update.tsx.ejs +1 -1
  103. package/generators/entity-client/templates/react/src/test/javascript/e2e/entities/entity-update-page-object.ts.ejs +1 -1
  104. package/generators/entity-client/templates/vue/src/test/javascript/e2e/entities/entity-update-page-object.ts.ejs +1 -1
  105. package/generators/entity-client/templates/vue/src/test/javascript/e2e/entities/entity.spec.ts.ejs +1 -1
  106. package/generators/entity-i18n/esm.mjs +2 -3
  107. package/generators/entity-server/esm.mjs +2 -3
  108. package/generators/entity-server/files-couchbase.js +23 -2
  109. package/generators/entity-server/files.js +16 -2
  110. package/generators/entity-server/index.js +8 -1
  111. package/generators/entity-server/templates/couchbase/src/main/java/package/domain/Entity.java.jhi.spring_data_couchbase.ejs +11 -13
  112. package/generators/entity-server/templates/couchbase/src/main/java/package/repository/EntityRepository.java.ejs +23 -59
  113. package/generators/entity-server/templates/couchbase/src/main/resources/config/couchmove/changelog/entity.fts.ejs +5 -6
  114. package/generators/entity-server/templates/couchbase/src/main/resources/config/couchmove/changelog/entity.n1ql.ejs +5 -0
  115. package/generators/entity-server/templates/partials/it_patch_update.partial.java.ejs +2 -2
  116. package/generators/entity-server/templates/partials/save_template.ejs +1 -1
  117. package/generators/entity-server/templates/src/main/java/package/common/get_all_template.ejs +1 -1
  118. package/generators/entity-server/templates/src/main/java/package/common/inject_template.ejs +4 -4
  119. package/generators/entity-server/templates/src/main/java/package/common/patch_template.ejs +3 -3
  120. package/generators/entity-server/templates/src/main/java/package/common/search_stream_template.ejs +1 -1
  121. package/generators/entity-server/templates/src/main/java/package/common/search_template.ejs +1 -1
  122. package/generators/entity-server/templates/src/main/java/package/domain/Entity.java.jhi.ejs +2 -2
  123. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository.java.ejs +31 -18
  124. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryInternalImpl_reactive.java.ejs +3 -3
  125. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryWithBagRelationships.java.ejs +37 -0
  126. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepositoryWithBagRelationshipsImpl.java.ejs +90 -0
  127. package/generators/entity-server/templates/src/main/java/package/repository/EntityRepository_reactive.java.ejs +2 -2
  128. package/generators/entity-server/templates/src/main/java/package/repository/rowmapper/EntityRowMapper.java.ejs +1 -1
  129. package/generators/entity-server/templates/src/main/java/package/repository/search/EntitySearchRepository.java.ejs +3 -5
  130. package/generators/entity-server/templates/src/main/java/package/repository/search/{SortToFieldSortBuilderConverter.java.ejs → SortToSortBuilderListConverter.java.ejs} +4 -3
  131. package/generators/entity-server/templates/src/main/java/package/service/criteria/EntityCriteria.java.ejs +8 -6
  132. package/generators/entity-server/templates/src/main/java/package/service/impl/EntityServiceImpl.java.ejs +1 -1
  133. package/generators/entity-server/templates/src/main/java/package/service/mapper/EntityMapper.java.ejs +6 -6
  134. package/generators/entity-server/templates/src/main/java/package/web/rest/EntityResource.java.ejs +1 -1
  135. package/generators/entity-server/templates/src/test/java/package/web/rest/EntityResourceIT.java.ejs +5 -5
  136. package/generators/export-jdl/esm.mjs +1 -3
  137. package/generators/gae/esm.mjs +1 -3
  138. package/generators/generate-blueprint/constants.mjs +146 -0
  139. package/generators/generate-blueprint/esm.mjs +19 -0
  140. package/generators/generate-blueprint/files.mjs +81 -0
  141. package/generators/generate-blueprint/generator.mjs +363 -0
  142. package/generators/generate-blueprint/index.mjs +20 -0
  143. package/generators/generate-blueprint/templates/.eslintrc.json.ejs +41 -0
  144. package/generators/generate-blueprint/templates/.github/workflows/generator.yml.ejs +32 -0
  145. package/generators/generate-blueprint/templates/.mocharc.cjs.ejs +29 -0
  146. package/generators/{server/templates/couchbase/src/main/java/package/config/couchbase/package-info.java.ejs → generate-blueprint/templates/.prettierignore.jhi.blueprint.ejs} +4 -7
  147. package/generators/generate-blueprint/templates/README.md.ejs +75 -0
  148. package/generators/generate-blueprint/templates/cli/cli.mjs.ejs +35 -0
  149. package/generators/generate-blueprint/templates/cli/commands.cjs.ejs +25 -0
  150. package/generators/generate-blueprint/templates/generators/generator/generator.mjs.jhi.ejs +98 -0
  151. package/generators/generate-blueprint/templates/generators/generator/generator.spec.mjs.ejs +42 -0
  152. package/generators/generate-blueprint/templates/generators/generator/index.mjs.ejs +19 -0
  153. package/generators/generate-blueprint/templates/generators/generator/templates/template-file.ejs +0 -0
  154. package/generators/generate-blueprint/templates/test/utils.mjs.ejs +17 -0
  155. package/generators/generator-base-blueprint.js +29 -0
  156. package/generators/generator-base-docker.js +1 -0
  157. package/generators/generator-base-entities.cjs +368 -0
  158. package/generators/generator-base.js +128 -23
  159. package/generators/generator-constants.js +18 -16
  160. package/generators/generator-list.js +2 -0
  161. package/generators/gradle/esm.mjs +19 -0
  162. package/generators/heroku/esm.mjs +1 -3
  163. package/generators/info/esm.mjs +1 -3
  164. package/generators/init/esm.mjs +19 -0
  165. package/generators/init/files.cjs +9 -3
  166. package/generators/init/index.cjs +5 -0
  167. package/generators/init/templates/.gitignore.jhi.ejs +5 -0
  168. package/generators/init/templates/{.lintstagedrc.js.ejs → .lintstagedrc.cjs.ejs} +0 -0
  169. package/generators/java/esm.mjs +19 -0
  170. package/generators/java/index.cjs +58 -2
  171. package/generators/kubernetes/esm.mjs +1 -3
  172. package/generators/kubernetes-helm/esm.mjs +1 -3
  173. package/generators/kubernetes-knative/esm.mjs +1 -3
  174. package/generators/languages/esm.mjs +2 -3
  175. package/generators/languages/templates/src/test/resources/i18n/messages_fr.properties.ejs +4 -1
  176. package/generators/maven/esm.mjs +19 -0
  177. package/generators/openapi-client/esm.mjs +1 -3
  178. package/generators/openapi-client/index.js +11 -4
  179. package/generators/openshift/esm.mjs +1 -3
  180. package/generators/page/esm.mjs +1 -3
  181. package/generators/project-name/esm.mjs +19 -0
  182. package/generators/server/esm.mjs +2 -2
  183. package/generators/server/files-couchbase.js +28 -31
  184. package/generators/server/files.js +14 -1
  185. package/generators/server/index.js +13 -13
  186. package/generators/server/needle-api/needle-server-maven.js +1 -1
  187. package/generators/server/templates/couchbase/src/main/java/package/repository/CouchbaseSearchRepository.java.ejs +91 -0
  188. package/generators/server/templates/couchbase/src/main/java/package/repository/JHipsterCouchbaseRepository.java.ejs +43 -64
  189. package/generators/server/templates/couchbase/src/main/java/package/repository/PersistentTokenRepository_couchbase.java.ejs +2 -2
  190. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/authority/ROLE_ADMIN.json.ejs +3 -0
  191. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/authority/ROLE_USER.json.ejs +3 -0
  192. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/{user__admin.json.ejs → user/admin.json.ejs} +2 -2
  193. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/{user__user.json.ejs → user/user.json.ejs} +2 -2
  194. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.2__create_indexes.n1ql.ejs +34 -0
  195. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0__create_collections.n1ql.ejs +8 -0
  196. package/generators/server/templates/couchbase/src/test/java/package/CouchbaseTestContainerExtension.java.ejs +4 -3
  197. package/generators/server/templates/couchbase/src/test/java/package/repository/{JHipsterCouchbaseRepositoryTest.java.ejs → CouchbaseSearchRepositoryTest.java.ejs} +2 -2
  198. package/generators/server/templates/gradle/profile_prod.gradle.ejs +4 -0
  199. package/generators/server/templates/gradle.properties.ejs +6 -6
  200. package/generators/server/templates/npmw +14 -5
  201. package/generators/server/templates/pom.xml.ejs +47 -42
  202. package/generators/server/templates/src/main/docker/app.yml.ejs +4 -2
  203. package/generators/server/templates/src/main/docker/zipkin.yml.ejs +25 -0
  204. package/generators/server/templates/src/main/java/package/config/DatabaseConfiguration_couchbase.java.ejs +26 -16
  205. package/generators/server/templates/src/main/java/package/config/LocaleConfiguration_reactive.java.ejs +1 -1
  206. package/generators/server/templates/src/main/java/package/config/SecurityConfiguration_reactive.java.ejs +2 -1
  207. package/generators/server/templates/src/main/java/package/domain/Authority.java.ejs +11 -0
  208. package/generators/server/templates/src/main/java/package/domain/PersistentToken.java.ejs +6 -6
  209. package/generators/server/templates/src/main/java/package/domain/User.java.ejs +9 -7
  210. package/generators/server/templates/src/main/java/package/repository/AuthorityRepository.java.ejs +1 -11
  211. package/generators/server/templates/src/main/java/package/repository/UserRepository.java.ejs +48 -72
  212. package/generators/server/templates/src/main/java/package/security/oauth2/CustomClaimConverter.java.ejs +1 -1
  213. package/generators/server/templates/src/main/java/package/service/UserService.java.ejs +8 -6
  214. package/generators/server/templates/src/main/java/package/web/filter/OAuth2ReactiveRefreshTokensWebFilter.java.ejs +0 -1
  215. package/generators/server/templates/src/main/java/package/web/rest/AccountResource.java.ejs +1 -1
  216. package/generators/server/templates/src/main/java/package/web/rest/LogoutResource_reactive.java.ejs +1 -1
  217. package/generators/server/templates/src/main/java/package/web/rest/PublicUserResource.java.ejs +2 -2
  218. package/generators/server/templates/src/main/resources/config/application-dev.yml.ejs +8 -0
  219. package/generators/server/templates/src/main/resources/config/application-prod.yml.ejs +6 -0
  220. package/generators/server/templates/src/main/resources/config/application.yml.ejs +2 -0
  221. package/generators/server/templates/src/test/java/package/IntegrationTest.java.ejs +3 -1
  222. package/generators/server/templates/src/test/java/package/TechnicalStructureTest.java.ejs +21 -15
  223. package/generators/server/templates/src/test/java/package/config/JHipsterBlockHoundIntegration.java.ejs +2 -0
  224. package/generators/server/templates/src/test/java/package/cucumber/stepdefs/StepDefs.java.ejs +8 -0
  225. package/generators/server/templates/src/test/java/package/cucumber/stepdefs/UserStepDefs.java.ejs +17 -3
  226. package/generators/server/templates/src/test/java/package/security/SecurityUtilsUnitTest_reactive.java.ejs +1 -1
  227. package/generators/server/templates/src/test/java/package/security/oauth2/CustomClaimConverterIT.java.ejs +1 -1
  228. package/generators/server/templates/src/test/java/package/service/mapper/UserMapperTest.java.ejs +1 -1
  229. package/generators/server/templates/src/test/java/package/web/rest/AccountResourceIT.java.ejs +13 -6
  230. package/generators/server/templates/src/test/java/package/web/rest/TestUtil.java.ejs +1 -6
  231. package/generators/server/templates/src/test/java/package/web/rest/UserResourceIT.java.ejs +40 -42
  232. package/generators/server/templates/src/test/java/package/web/rest/errors/ExceptionTranslatorIT_reactive.java.ejs +1 -1
  233. package/generators/spring-boot/esm.mjs +19 -0
  234. package/generators/spring-controller/esm.mjs +1 -3
  235. package/generators/spring-service/esm.mjs +1 -3
  236. package/generators/upgrade/esm.mjs +1 -3
  237. package/generators/upgrade-config/esm.mjs +1 -3
  238. package/generators/workspaces/esm.mjs +1 -3
  239. package/lib/constants/logo.cjs +30 -0
  240. package/lib/constants/priorities.cjs +216 -2
  241. package/lib/constants/priorities.mjs +29 -1
  242. package/lib/index.mjs +6 -0
  243. package/lib/support/mixin.cjs +5 -1
  244. package/lib/support/shared-data.cjs +34 -1
  245. package/package.json +27 -23
  246. package/utils/entity.js +19 -2
  247. package/utils/faker.js +3 -3
  248. package/utils/field.js +61 -49
  249. package/utils/relationship.js +5 -3
  250. package/utils/user.js +109 -0
  251. package/generators/app/generator.spec.mjs +0 -47
  252. package/generators/aws/generator.spec.mjs +0 -47
  253. package/generators/azure-app-service/generator.spec.mjs +0 -47
  254. package/generators/azure-spring-cloud/generator.spec.mjs +0 -47
  255. package/generators/base/generator.spec.mjs +0 -44
  256. package/generators/bootstrap/generator.spec.mjs +0 -44
  257. package/generators/ci-cd/generator.spec.mjs +0 -47
  258. package/generators/client/__workflow/devserver-angular.json +0 -13
  259. package/generators/client/__workflow/devserver-react.json +0 -13
  260. package/generators/client/__workflow/devserver-vue.json +0 -13
  261. package/generators/client/generator.spec.mjs +0 -47
  262. package/generators/cloudfoundry/generator.spec.mjs +0 -47
  263. package/generators/common/generator.spec.mjs +0 -47
  264. package/generators/cypress/generator.spec.mjs +0 -47
  265. package/generators/database-changelog/generator.spec.mjs +0 -47
  266. package/generators/database-changelog-liquibase/generator.spec.mjs +0 -47
  267. package/generators/docker-compose/generator.spec.mjs +0 -44
  268. package/generators/entities/generator.spec.mjs +0 -47
  269. package/generators/entities-client/generator.spec.mjs +0 -47
  270. package/generators/entity/generator.spec.mjs +0 -47
  271. package/generators/entity-client/generator.spec.mjs +0 -47
  272. package/generators/entity-i18n/generator.spec.mjs +0 -47
  273. package/generators/entity-server/generator.spec.mjs +0 -47
  274. package/generators/export-jdl/generator.spec.mjs +0 -44
  275. package/generators/gae/generator.spec.mjs +0 -47
  276. package/generators/gradle/__snapshots__/generator.spec.cjs.snap +0 -59
  277. package/generators/gradle/generator.spec.cjs +0 -71
  278. package/generators/heroku/generator.spec.mjs +0 -47
  279. package/generators/info/generator.spec.mjs +0 -44
  280. package/generators/init/__snapshots__/generator.spec.cjs.snap +0 -65
  281. package/generators/init/generator.spec.cjs +0 -112
  282. package/generators/java/__snapshots__/generator.spec.cjs.snap +0 -118
  283. package/generators/java/generator.spec.cjs +0 -87
  284. package/generators/kubernetes/generator.spec.mjs +0 -44
  285. package/generators/kubernetes-helm/generator.spec.mjs +0 -44
  286. package/generators/kubernetes-knative/generator.spec.mjs +0 -44
  287. package/generators/languages/generator.spec.mjs +0 -47
  288. package/generators/maven/__snapshots__/generator.spec.cjs.snap +0 -53
  289. package/generators/maven/generator.spec.cjs +0 -78
  290. package/generators/openapi-client/generator.spec.mjs +0 -47
  291. package/generators/openshift/generator.spec.mjs +0 -44
  292. package/generators/page/generator.spec.mjs +0 -47
  293. package/generators/project-name/generator.spec.cjs +0 -43
  294. package/generators/server/__snapshots__/generator.spec.mjs.snap +0 -1931
  295. package/generators/server/generator.spec.mjs +0 -52
  296. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomCouchbaseRepositoryFactory.java.ejs +0 -83
  297. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomCouchbaseRepositoryFactoryBean.java.ejs +0 -40
  298. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomCouchbaseRepositoryQuery.java.ejs +0 -44
  299. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomN1qlQueryCreator.java.ejs +0 -162
  300. package/generators/server/templates/couchbase/src/main/java/package/config/couchbase/CustomN1qlRepositoryQueryExecutor.java.ejs +0 -104
  301. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/ROLE_ADMIN.json.ejs +0 -3
  302. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0.1__initial_setup/ROLE_USER.json.ejs +0 -3
  303. package/generators/server/templates/couchbase/src/main/resources/config/couchmove/changelog/V0__create_indexes.n1ql.ejs +0 -19
  304. package/generators/spring-boot/__snapshots__/generator.spec.cjs.snap +0 -80
  305. package/generators/spring-boot/generator.spec.cjs +0 -64
  306. package/generators/spring-controller/generator.spec.mjs +0 -47
  307. package/generators/spring-service/generator.spec.mjs +0 -47
  308. package/generators/upgrade/generator.spec.mjs +0 -44
  309. package/generators/upgrade-config/generator.spec.mjs +0 -44
  310. package/generators/workspaces/generator.spec.mjs +0 -47
@@ -22,6 +22,7 @@ const { INITIALIZING_PRIORITY, PREPARING_PRIORITY, DEFAULT_PRIORITY, WRITING_PRI
22
22
  require('../../lib/constants/priorities.cjs').compat;
23
23
 
24
24
  const constants = require('../generator-constants');
25
+ const { entityDefaultConfig } = require('../generator-defaults');
25
26
  const { writeFiles, customizeFiles } = require('./files');
26
27
  const utils = require('../utils');
27
28
  const { GENERATOR_ENTITY_SERVER } = require('../generator-list');
@@ -35,7 +36,7 @@ module.exports = class extends BaseBlueprintGenerator {
35
36
  constructor(args, options, features) {
36
37
  super(args, options, features);
37
38
 
38
- this.entity = this.options.context;
39
+ this.entity = this.options.context || { ...entityDefaultConfig };
39
40
 
40
41
  this.jhipsterContext = this.options.jhipsterContext || this.options.context;
41
42
  }
@@ -178,6 +179,12 @@ module.exports = class extends BaseBlueprintGenerator {
178
179
  // Public API method used by the getter and also by Blueprints
179
180
  _writing() {
180
181
  return {
182
+ cleanupOldElasticSearchFiles() {
183
+ if (!this.searchEngineElasticsearch) return;
184
+ if (this.isJhipsterVersionLessThan('7.6.1')) {
185
+ this.removeFile(`${this.entityAbsoluteFolder}/repository/search/SortToFieldSortBuilderConverter.java`);
186
+ }
187
+ },
181
188
  ...writeFiles(),
182
189
  ...super._missingPostWriting(),
183
190
  };
@@ -23,6 +23,7 @@
23
23
  <&_ if (fragment.staticImportSection) { -&>
24
24
  <%_ if (!embedded) { _%>
25
25
  import static <%= packageName %>.config.Constants.ID_DELIMITER;
26
+ import static <%= packageName %>.domain.<%= entityClass %>.TYPE_NAME;
26
27
  import static org.springframework.data.couchbase.core.mapping.id.GenerationStrategy.UNIQUE;
27
28
  <%_ } _%>
28
29
  <&_ } -&>
@@ -31,9 +32,10 @@ import static org.springframework.data.couchbase.core.mapping.id.GenerationStrat
31
32
  <%_ if (!embedded) { _%>
32
33
  import org.springframework.data.annotation.Id;
33
34
  import org.springframework.data.couchbase.core.mapping.id.GeneratedValue;
34
- import org.springframework.data.couchbase.core.mapping.id.IdPrefix;
35
- <%_ } _%>
36
35
  import org.springframework.data.couchbase.core.mapping.Document;
36
+ import org.springframework.data.couchbase.repository.Collection;
37
+ import org.springframework.data.annotation.TypeAlias;
38
+ <%_ } _%>
37
39
  import org.springframework.data.couchbase.core.mapping.Field;
38
40
  <%_ if (relationships.length > 0) { _%>
39
41
  import com.fasterxml.jackson.annotation.JsonIgnore;
@@ -42,21 +44,17 @@ import java.util.stream.Collectors;
42
44
  <&_ } -&>
43
45
 
44
46
  <&_ if (fragment.annotationSection) { -&>
47
+ <%_ if (!embedded) { _%>
45
48
  @Document
49
+ @TypeAlias(TYPE_NAME)
50
+ @Collection(TYPE_NAME)
51
+ <%_ } _%>
46
52
  <&_ } -&>
47
53
 
48
54
  <&_ if (fragment.classStaticFieldsSection) { -&>
49
- <%_ if (!embedded) { _%>
50
- public static final String PREFIX = "<%= entityInstance.toLowerCase() %>";
51
- <%_ } _%>
52
- <&_ } -&>
53
-
54
- <&_ if (fragment.classFieldsSection) { -&>
55
- <%_ if (!embedded) { _%>
56
- @SuppressWarnings("unused")
57
- @IdPrefix
58
- private String prefix = PREFIX;
59
- <%_ } _%>
55
+ <%_ if (!embedded) { _%>
56
+ public static final String TYPE_NAME = "<%= entityInstance %>";
57
+ <%_ } _%>
60
58
  <&_ } -&>
61
59
 
62
60
  <%_ for (const field of fields) { _%>
@@ -20,40 +20,27 @@ package <%= entityAbsolutePackage %>.repository;
20
20
 
21
21
  import <%= entityAbsolutePackage %>.domain.<%= persistClass %>;
22
22
 
23
- <%_ if (relationships.length !== 0 || searchEngineCouchbase) { _%>
23
+ <%_ if (relationships.length !== 0) { _%>
24
24
  import org.springframework.data.couchbase.repository.Query;
25
25
  import org.springframework.data.domain.Pageable;
26
- import com.couchbase.client.java.query.QueryScanConsistency;
27
- import org.springframework.data.couchbase.repository.ScanConsistency;
28
- import static <%= packageName %>.repository.JHipsterCouchbaseRepository.pageableStatement;
29
26
  <%_ if (reactive) { _%>
30
27
  import reactor.core.publisher.Flux;
31
28
  import reactor.core.publisher.Mono;
32
29
  <%_ } else { _%>
33
30
  import org.springframework.data.domain.Page;
34
- import org.springframework.data.domain.PageImpl;
35
31
  import java.util.List;
36
32
  <%_ } _%>
37
33
  <%_ } _%>
38
34
  <%_ if (relationships.length !== 0 && !reactive) { _%>
39
35
  import java.util.Optional;
40
36
  <%_ } _%>
41
- <%_ if (searchEngineCouchbase) { _%>
42
- import static <%= packageName %>.repository.JHipsterCouchbaseRepository.searchQuery;
43
- <%_ } _%>
44
37
  import org.springframework.stereotype.Repository;
45
- <%_
46
- let importList = fieldsContainOwnerManyToMany;
47
- for (r of relationships) {
48
- if (r.relationshipManyToOne && r.otherEntityUser) {
49
- importList = true;
50
- }
51
- }
52
- _%>
53
38
  <%_ if (primaryKey.typeUUID) { _%>
54
39
  import java.util.UUID;
55
40
  <%_ } _%>
56
41
 
42
+ import static <%= packageName %>.domain.<%= entityClass %>.TYPE_NAME;
43
+
57
44
  /**
58
45
  * Spring Data Couchbase repository for the <%= persistClass %> entity.
59
46
  */
@@ -66,12 +53,12 @@ import java.util.UUID;
66
53
  let pageOrFlux = reactive ? 'Flux' : 'Page';
67
54
  _%>
68
55
  @Repository
69
- public interface <%= entityClass %>Repository extends JHipsterCouchbaseRepository<<%= persistClass %>, <%= primaryKey.type %>><% if (jpaMetamodelFiltering) { %>, JpaSpecificationExecutor<<%= persistClass %>><% } %> {
56
+ public interface <%= entityClass %>Repository extends JHipsterCouchbaseRepository<<%= persistClass %>, <%= primaryKey.type %>><% if (jpaMetamodelFiltering) { %>, JpaSpecificationExecutor<<%= persistClass %>><% } %><% if (searchEngine) { %>, CouchbaseSearchRepository<<%= persistClass %>, <%= primaryKey.type %>><% } %> {
70
57
  <%_
71
- if (relationships.length !== 0) { %>
72
-
58
+ var notEmbeddedRelationships = relationships.filter(relationship => !relationship.otherEntityIsEmbedded)
59
+ if (notEmbeddedRelationships.length !== 0) { %>
73
60
  String SELECT = "SELECT meta(b).id as __id, meta(b).cas as __cas, b.*" + <%
74
- for (const relationship of relationships) {
61
+ for (const relationship of notEmbeddedRelationships) {
75
62
  if (relationship.collection) {
76
63
  %> ", (SELECT `<%= relationship.relationshipFieldName %>`.*, meta(`<%= relationship.relationshipFieldName %>`).id FROM `<%= relationship.relationshipFieldNamePlural %>` `<%= relationship.relationshipFieldName %>`) as `<%= relationship.relationshipFieldNamePlural %>`" + <%
77
64
  } else {
@@ -81,58 +68,35 @@ public interface <%= entityClass %>Repository extends JHipsterCouchbaseRepositor
81
68
  " FROM #{#n1ql.bucket} b";
82
69
 
83
70
  String JOIN = <%
84
- relationships.forEach(function (relationship, index) {
71
+ notEmbeddedRelationships.forEach(function (relationship, index) {
85
72
  if (!relationship.collection) { %>
86
- " LEFT JOIN #{#n1ql.bucket} `<%= relationship.relationshipFieldName %>` ON KEYS b.`<%= relationship.relationshipFieldName %>`"<%
73
+ " LEFT JOIN `<%= relationship.otherEntity.entityInstance %>` `<%= relationship.relationshipFieldName %>` ON KEYS b.`<%= relationship.relationshipFieldName %>`"<%
87
74
  } else { %>
88
- " LEFT NEST #{#n1ql.bucket} `<%= relationship.relationshipFieldNamePlural %>` ON KEYS b.`<%= relationship.relationshipFieldNamePlural %>`"<%
75
+ " LEFT NEST `<%= relationship.otherEntity.entityInstance %>` `<%= relationship.relationshipFieldNamePlural %>` ON KEYS b.`<%= relationship.relationshipFieldNamePlural %>`"<%
89
76
  }
90
- if (index < relationships.length - 1) { %>
77
+ if (index < notEmbeddedRelationships.length - 1) { %>
91
78
  + <%
92
79
  }
93
80
  }); %>;
94
81
 
95
- default <%= pageOrFlux %><<%= persistClass %>> findAll<% if (reactive) {%>By<% } %>(Pageable pageable) {
96
- return
97
- <% if (!reactive) { %>new PageImpl<>(<% } %>
98
- findAllBy(pageableStatement(pageable, "b"))
99
- <% if (!reactive) { %>,
100
- pageable,
101
- count()
102
- )<% } %>;
103
- }
104
-
105
- @Query(SELECT + JOIN + " WHERE b.#{#n1ql.filter} #{[0]}")
106
- @ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
107
- <%= listOrFlux %><<%= persistClass %>> findAllBy(String pageableStatement);
108
-
109
- @Query(SELECT + JOIN + " WHERE b.#{#n1ql.filter}")
110
- @ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
82
+ String WHERE = " WHERE b.type = '" + TYPE_NAME + "'";
83
+
84
+ @Query(SELECT + JOIN + WHERE)
85
+ <%= pageOrFlux %><<%= persistClass %>> findAll(Pageable pageable);
86
+
87
+ @Query(SELECT + JOIN + WHERE)
111
88
  <%= listOrFlux %><<%= persistClass %>> findAll();
112
89
 
113
90
  @Query(SELECT + " USE KEYS $1" + JOIN)
114
- @ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
115
91
  <%= optionalOrMono %><<%= persistClass %>> findById(String id);<%
116
92
  } _%>
117
93
 
118
- <%_ if (searchEngineCouchbase) { _%>
119
- <%_ if (relationships.length === 0) { _%>
120
- @Query("#{#n1ql.selectEntity} WHERE #{#n1ql.filter} AND SEARCH(#{#n1ql.bucket}, #{[0]}) #{[1]}")
121
- <%_ } else { _%>
122
- @Query(SELECT + JOIN + " WHERE b.#{#n1ql.filter} AND SEARCH(b, #{[0]}) #{[1]}")
123
- <%_ } _%>
124
- <%= listOrFlux %><<%= persistClass %>> search(String queryString, String pageableStatement);
125
-
126
- default <%= listOrFlux %><<%= persistClass %>> search(String queryString) {
127
- return search(searchQuery(queryString).toString(), "");
128
- }
129
-
130
- default <%= pageOrFlux %><<%= persistClass %>> search(String queryString, Pageable pageable) {
131
- return
132
- <% if (!reactive) { %>new PageImpl<>(<% } %>
133
- search(searchQuery(queryString).toString(), pageableStatement(pageable<% if (relationships.length !== 0) { %>, "b"<% } %>))
134
- <% if (!reactive) { %>)<% } %>;
135
- }
94
+ <%_ if (searchEngine && notEmbeddedRelationships.length !== 0) { _%>
95
+ @Query(SELECT + JOIN + WHERE + " AND " + SEARCH_CONDITION)
96
+ <%= listOrFlux %><<%= persistClass %>> search(String queryString);
97
+
98
+ @Query(SELECT + JOIN + WHERE + " AND " + SEARCH_CONDITION)
99
+ <%= pageOrFlux %><<%= persistClass %>> search(String queryString, Pageable pageable);
136
100
  <%_ } _%>
137
101
 
138
102
  }
@@ -4,8 +4,8 @@
4
4
  "doc_config": {
5
5
  "docid_prefix_delim": "",
6
6
  "docid_regexp": "",
7
- "mode": "type_field",
8
- "type_field": "_class"
7
+ "mode": "scope.collection.type_field",
8
+ "type_field": "type"
9
9
  },
10
10
  "mapping": {
11
11
  "analysis": {},
@@ -17,12 +17,11 @@
17
17
  "enabled": false
18
18
  },
19
19
  "default_type": "_default",
20
- "docvalues_dynamic": true,
20
+ "docvalues_dynamic": false,
21
21
  "index_dynamic": true,
22
22
  "store_dynamic": false,
23
- "type_field": "_type",
24
23
  "types": {
25
- "<%= entityAbsolutePackage %>.domain.<%= entityClass %>": {
24
+ "${scope}.<%= entityInstance %>.<%= entityInstance %>": {
26
25
  "dynamic": true,
27
26
  "enabled": true
28
27
  }
@@ -36,5 +35,5 @@
36
35
  "sourceType": "couchbase",
37
36
  "sourceName": "${bucket}",
38
37
  "uuid": "",
39
- "name": "<%= entityClass.toLowerCase() %>"
38
+ "name": "<%= entityInstance %>"
40
39
  }
@@ -0,0 +1,5 @@
1
+ CREATE COLLECTION `${bucket}`.`${scope}`.`<%= entityInstance %>`;
2
+
3
+ CREATE INDEX `<%= entityInstance %>_type` ON `${bucket}`.`${scope}`.`<%= entityInstance %>`(type)
4
+ WHERE `type` = "<%= entityInstance %>"
5
+ WITH { "defer_build" : true };
@@ -40,14 +40,14 @@ partialUpdated<%= persistClass %>.set<%= primaryKey.nameCapitalized %>(<%= persi
40
40
  <%_ if (reactive) { _%>
41
41
  webTestClient
42
42
  .patch()
43
- .uri(ENTITY_API_URL_ID, partialUpdated<%= asEntity(entityClass) %>.get<%= primaryKey.nameCapitalized %>())
43
+ .uri(ENTITY_API_URL_ID, partialUpdated<%= persistClass %>.get<%= primaryKey.nameCapitalized %>())
44
44
  .contentType(MediaType.valueOf("application/merge-patch+json"))
45
45
  .bodyValue(TestUtil.convertObjectToJsonBytes(<%= 'partialUpdated' + persistClass %>))
46
46
  .exchange()
47
47
  .expectStatus()
48
48
  .isOk();
49
49
  <%_ } else { _%>
50
- rest<%= entityClass %>MockMvc.perform(patch(ENTITY_API_URL_ID, partialUpdated<%= asEntity(entityClass) %>.get<%= primaryKey.nameCapitalized %>())<% if (testsNeedCsrf) { %>.with(csrf())<% }%>
50
+ rest<%= entityClass %>MockMvc.perform(patch(ENTITY_API_URL_ID, partialUpdated<%= persistClass %>.get<%= primaryKey.nameCapitalized %>())<% if (testsNeedCsrf) { %>.with(csrf())<% }%>
51
51
  .contentType("application/merge-patch+json")
52
52
  .content(TestUtil.convertObjectToJsonBytes(<%= 'partialUpdated' + persistClass %>)))
53
53
  .andExpect(status().isOk());
@@ -38,7 +38,7 @@ if (isUsingMapsId) {
38
38
  }
39
39
  <%_ } _%>
40
40
  <%_ } _%>
41
- <%_ if (!viaService) { _%>
41
+ <%_ if (!viaService) { _%>
42
42
  <%_ if (dtoMapstruct) { _%>
43
43
  <%_ resultEntity = persistInstance; _%>
44
44
  <%= persistClass %> <%= persistInstance %> = <%= dtoToEntity %>(<%= instanceName %>);
@@ -65,7 +65,7 @@ _%>
65
65
  return <%= entityInstance %>Repository.<% if (relationshipsContainEagerLoad) { %>findAllWithEagerRelationships<% } else { %>findAll<% } %>()<% if (reactive) { %>.collectList()<% } %>;
66
66
  <%_ } _%>
67
67
  <%_ } else { _%>
68
- public <% if (reactive) { %>Mono<ResponseEntity<List<<%= instanceType %>>>><% } else { %>ResponseEntity<List<<%= instanceType %>>><% } %> getAll<%= entityClassPlural %>(@org.springdoc.api.annotations.ParameterObject Pageable pageable<% if (reactive) { %>, ServerHttpRequest request<% } %><% if (fieldsContainNoOwnerOneToOne) { %>, @RequestParam(required = false) String filter<% } %><% if (relationshipsContainEagerLoad) { %>, @RequestParam(required = false, defaultValue = "false") boolean eagerload<% } %>) {<%- include('get_all_stream_template', {viaService: viaService}); -%>
68
+ public <% if (reactive) { %>Mono<ResponseEntity<List<<%= instanceType %>>>><% } else { %>ResponseEntity<List<<%= instanceType %>>><% } %> getAll<%= entityClassPlural %>(@org.springdoc.api.annotations.ParameterObject Pageable pageable<% if (reactive) { %>, ServerHttpRequest request<% } %><% if (fieldsContainNoOwnerOneToOne) { %>, @RequestParam(required = false) String filter<% } %><% if (relationshipsContainEagerLoad) { %>, @RequestParam(required = false, defaultValue = "true") boolean eagerload<% } %>) {<%- include('get_all_stream_template', {viaService: viaService}); -%>
69
69
  log.debug("REST request to get a page of <%= entityClassPlural %>");
70
70
  <%_ if (reactive) { _%>
71
71
  return <%= entityInstance %><%= viaService ? 'Service.countAll' : 'Repository.count' %>().zipWith(<%= entityInstance %><%= viaService ? 'Service.findAll' : 'Repository.findAllBy' %>(pageable)<%= reactiveEntityToDto %>.collectList())
@@ -42,11 +42,11 @@
42
42
  const mapsIdEntityInstance = mapsIdEntity.charAt(0).toLowerCase() + mapsIdEntity.slice(1);
43
43
  const mapsIdRepoInstance = `${mapsIdEntityInstance}Repository`;
44
44
  beans.push({class: `${mapsIdEntity}Repository`, instance: mapsIdRepoInstance});
45
- }
46
- }
47
- if (saveUserSnapshot && (viaService || constructorName.endsWith('Resource'))) {
48
- beans.push({class: 'UserRepository', instance: 'userRepository'});
49
45
  }
46
+ }
47
+ if (saveUserSnapshot && (viaService || constructorName.endsWith('Resource'))) {
48
+ beans.push({class: 'UserRepository', instance: 'userRepository'});
49
+ }
50
50
  _%>
51
51
 
52
52
  <%= beans.map(bean => `private final ${bean.class} ${bean.instance};`).join('\n\n ') %>
@@ -24,7 +24,7 @@ const mapOrFlatMap = reactive ? 'flatMap' : 'map'
24
24
  const returnPrefix = (isService) ? 'return' : returnType + '<' + instanceType + '> result =';
25
25
  const mapper = entityInstance + 'Mapper';
26
26
  _%>
27
- <%_ if(viaService) { _%>
27
+ <%_ if (viaService) { _%>
28
28
  <%_ if(reactive) { _%>
29
29
  Mono<<%= instanceType %>> result = <%= entityInstance %>Service.partialUpdate(<%= instanceName %>);
30
30
  <%_ } else { _%>
@@ -32,8 +32,8 @@ _%>
32
32
  <%_ } _%>
33
33
  <%_ } else { %>
34
34
  <%- returnPrefix %> <%= entityInstance %>Repository.findById(<%= instanceName %>.get<%= primaryKey.nameCapitalized %>())
35
- .map(existing<%= entityClass %> -> {
36
- <%_ if(dtoMapstruct) { _%>
35
+ .map(existing<%= entityClass %> -> {
36
+ <%_ if (dtoMapstruct) { _%>
37
37
  <%= mapper %>.partialUpdate(existing<%= entityClass %>, <%= instanceName %>);
38
38
  <%_ } else { _%>
39
39
  <%_ for (const field of fields.filter(field => !field.id && !field.transient)) { _%>
@@ -34,7 +34,7 @@ const entityToDtoReference = mapper + '::' + 'toDto'; %>
34
34
  .map(<%= entityToDtoReference %>)
35
35
  <%_ } _%>
36
36
  <%_ if (dtoMapstruct || searchEngineElasticsearch) { _%>
37
- .collect(Collectors.toList());
37
+ .collect(Collectors.toList());
38
38
  <%_ } _%>
39
39
  <%_ } _%>
40
40
  <%_ } else { _%>
@@ -26,7 +26,7 @@
26
26
  if (paginationNo) { %>
27
27
  public <% if (reactive) { %>Mono<<% } %>List<<%= instanceType %>><% if (reactive) { %>><% } %> search<%= entityClassPlural %>(@RequestParam String query) {
28
28
  log.debug("REST request to search <%= entityClassPlural %> for query {}", query);<%- include('search_stream_template', {viaService: viaService, fromResource: true}); -%>
29
- <% } if (!paginationNo) { %>
29
+ <% } else { %>
30
30
  public <% if (reactive) { %>Mono<<% } %>ResponseEntity<<%= listOrFlux %><<%= instanceType %>>><% if (reactive) { %>><% } %> search<%= entityClassPlural %>(@RequestParam String query, @org.springdoc.api.annotations.ParameterObject Pageable pageable<% if (reactive) { %>, ServerHttpRequest request<% } %>) {
31
31
  log.debug("REST request to search for a page of <%= entityClassPlural %> for query {}", query);
32
32
  <%_ if (reactive) { _%>
@@ -69,7 +69,7 @@ import java.time.Duration;
69
69
  import java.util.HashSet;
70
70
  import java.util.Set;
71
71
  <%_ } _%>
72
- <%_ if (fieldsContainUUID) { _%>
72
+ <%_ if (fieldsContainUUID || otherEntityPrimaryKeyTypesIncludesUUID) { _%>
73
73
  import java.util.UUID;
74
74
  <%_ }
75
75
  Object.keys(uniqueEnums).forEach(function(element) { _%>
@@ -361,7 +361,7 @@ _%>
361
361
  <%_ for (const relationship of relationships) { _%>
362
362
  <%_ if (relationship.otherEntity.embedded) {
363
363
  if (relationship.relationshipManyToOne) { _%>
364
- ", <%= relationship.relationshipFieldNamePlural %>='" + get<%= relationship.relationshipNameCapitalizedPlural %>() + "'" +
364
+ ", <%= relationship.relationshipFieldName %>='" + get<%= relationship.relationshipNameCapitalized %>() + "'" +
365
365
  <%_ } else if (relationship.relationshipOneToOne && relationship.ownerSide) { _%>
366
366
  ", <%= relationship.relationshipFieldName %>='" + get<%= relationship.relationshipNameCapitalized %>() + "'" +
367
367
  <%_ } _%>
@@ -41,16 +41,8 @@ import org.springframework.data.neo4j.repository.Neo4jRepository;
41
41
  import org.springframework.data.cassandra.repository.CassandraRepository;
42
42
  <%_ } _%>
43
43
  import org.springframework.stereotype.Repository;
44
- <%_
45
- if (databaseTypeSql || databaseTypeMongodb) {
46
- let importList = fieldsContainOwnerManyToMany;
47
- for (r of relationships) {
48
- if (r.relationshipManyToOne && r.otherEntityUser) {
49
- importList = true;
50
- }
51
- }
52
- _%>
53
- <%_ if (importList) { _%>
44
+ <%_ if (databaseTypeSql || databaseTypeMongodb) { _%>
45
+ <%_ if (relationshipsContainEagerLoad || relationships.some(r => r.relationshipManyToOne && r.otherEntityUser)) { _%>
54
46
  import java.util.List;
55
47
  <%_ } _%>
56
48
  <%_ if (relationshipsContainEagerLoad) { _%>
@@ -69,7 +61,7 @@ import java.util.UUID;
69
61
  @SuppressWarnings("unused")
70
62
  <%_ } _%>
71
63
  @Repository
72
- public interface <%= entityClass %>Repository extends <% if (databaseTypeSql) { %>JpaRepository<% } %><% if (databaseTypeMongodb) { %>MongoRepository<% } %><% if (databaseTypeNeo4j) { %>Neo4jRepository<% } %><% if (databaseTypeCassandra) { %>CassandraRepository<% } %><<%= persistClass %>, <%= primaryKey.type %>><% if (jpaMetamodelFiltering) { %>, JpaSpecificationExecutor<<%= persistClass %>><% } %> {
64
+ public interface <%= entityClass %>Repository extends <% if (containsBagRelationships && databaseTypeSql) { %><%= entityClass %>RepositoryWithBagRelationships, <% } %><% if (databaseTypeSql) { %>JpaRepository<% } %><% if (databaseTypeMongodb) { %>MongoRepository<% } %><% if (databaseTypeNeo4j) { %>Neo4jRepository<% } %><% if (databaseTypeCassandra) { %>CassandraRepository<% } %><<%= persistClass %>, <%= primaryKey.type %>><% if (jpaMetamodelFiltering) { %>, JpaSpecificationExecutor<<%= persistClass %>><% } %> {
73
65
  <%_ for (const relationship of relationships) { _%>
74
66
  <%_ if (relationship.relationshipManyToOne && relationship.otherEntityUser && databaseTypeSql) { _%>
75
67
 
@@ -80,25 +72,46 @@ public interface <%= entityClass %>Repository extends <% if (databaseTypeSql) {
80
72
  <%_ if (relationshipsContainEagerLoad) { _%>
81
73
  <%_ if (databaseTypeSql) { _%>
82
74
 
75
+ <%_ const containsToOneEagerRelationship = relationships.some(relationship => relationship.relationshipEagerLoad && !relationship.bagRelationship); _%>
76
+ default Optional<<%= persistClass %>> findOneWithEagerRelationships(<%= primaryKey.type %> <%= primaryKey.name %>) {
77
+ return <% if (containsBagRelationships) { %>this.fetchBagRelationships(<% } %>
78
+ this.<% if (containsToOneEagerRelationship) { %>findOneWithToOneRelationships<% } else { %>findById<% } %>(<%= primaryKey.name %>)
79
+ <% if (containsBagRelationships) { %>)<% } %>;
80
+ }
81
+
82
+ default List<<%= persistClass %>> findAllWithEagerRelationships() {
83
+ return <% if (containsBagRelationships) { %>this.fetchBagRelationships(<% } %>
84
+ this.<% if (containsToOneEagerRelationship) { %>findAllWithToOneRelationships<% } else { %>findAll<% } %>()
85
+ <% if (containsBagRelationships) { %>)<% } %>;
86
+ }
87
+
88
+ default Page<<%= persistClass %>> findAllWithEagerRelationships(Pageable pageable) {
89
+ return <% if (containsBagRelationships) { %>this.fetchBagRelationships(<% } %>
90
+ this.<% if (containsToOneEagerRelationship) { %>findAllWithToOneRelationships<% } else { %>findAll<% } %>(pageable)
91
+ <% if (containsBagRelationships) { %>)<% } %>;
92
+ }
93
+ <%_ if (containsToOneEagerRelationship) { _%>
94
+
83
95
  @Query(value = "select distinct <%= entityInstanceDbSafe %> from <%= persistClass %> <%= entityInstanceDbSafe %><%
84
96
  for (const relationship of relationships) {
85
- if (relationship.relationshipEagerLoad) { %> left join fetch <%= entityInstanceDbSafe %>.<%= relationship.reference.name %><% }
97
+ if (relationship.relationshipEagerLoad && !relationship.bagRelationship) { %> left join fetch <%= entityInstanceDbSafe %>.<%= relationship.reference.name %><% }
86
98
  } %>",
87
99
  countQuery = "select count(distinct <%= entityInstanceDbSafe %>) from <%= persistClass %> <%= entityInstanceDbSafe %>")
88
- Page<<%= persistClass %>> findAllWithEagerRelationships(Pageable pageable);
100
+ Page<<%= persistClass %>> findAllWithToOneRelationships(Pageable pageable);
89
101
 
90
102
  @Query("select distinct <%= entityInstanceDbSafe %> from <%= persistClass %> <%= entityInstanceDbSafe %><%
91
103
  for (const relationship of relationships) {
92
- if (relationship.relationshipEagerLoad) { %> left join fetch <%= entityInstanceDbSafe %>.<%= relationship.reference.name %><% }
104
+ if (relationship.relationshipEagerLoad && !relationship.bagRelationship) { %> left join fetch <%= entityInstanceDbSafe %>.<%= relationship.reference.name %><% }
93
105
  } %>")
94
- List<<%= persistClass %>> findAllWithEagerRelationships();
106
+ List<<%= persistClass %>> findAllWithToOneRelationships();
95
107
 
96
108
  @Query("select <%= entityInstanceDbSafe %> from <%= persistClass %> <%= entityInstanceDbSafe %><%
97
109
  for (const relationship of relationships) {
98
- if (relationship.relationshipEagerLoad) { %> left join fetch <%= entityInstanceDbSafe %>.<%= relationship.reference.name %><% }
110
+ if (relationship.relationshipEagerLoad && !relationship.bagRelationship) { %> left join fetch <%= entityInstanceDbSafe %>.<%= relationship.reference.name %><% }
99
111
  } %> where <%= entityInstanceDbSafe %>.id =:id")
100
- Optional<<%= persistClass %>> findOneWithEagerRelationships(@Param("id") <%= primaryKey.type %> id);
101
- <%_ } else if (databaseTypeMongodb) { _%>
112
+ Optional<<%= persistClass %>> findOneWithToOneRelationships(@Param("id") <%= primaryKey.type %> id);
113
+ <%_ } _%>
114
+ <%_ } else if (databaseTypeMongodb) { _%>
102
115
 
103
116
  @Query("{}")
104
117
  Page<<%= persistClass %>> findAllWithEagerRelationships(Pageable pageable);
@@ -112,7 +112,7 @@ _%>
112
112
  public <%= entityClass %>RepositoryInternalImpl(R2dbcEntityTemplate template, EntityManager entityManager<%_
113
113
  reactiveUniqueEntityTypes.forEach(function(element) { _%>, <%= element %>RowMapper <%= element.toLowerCase() %>Mapper<%_ }); _%>, R2dbcEntityOperations entityOperations,
114
114
  R2dbcConverter converter) {
115
- super(new MappingRelationalEntityInformation(converter.getMappingContext().getRequiredPersistentEntity(<%= entityClass %>.class)), entityOperations, converter);
115
+ super(new MappingRelationalEntityInformation(converter.getMappingContext().getRequiredPersistentEntity(<%= persistClass %>.class)), entityOperations, converter);
116
116
  this.db = template.getDatabaseClient();
117
117
  this.r2dbcEntityTemplate = template;
118
118
  this.entityManager = entityManager;
@@ -132,7 +132,7 @@ _%>
132
132
  }
133
133
 
134
134
  RowsFetchSpec<<%= persistClass %>> createQuery(Pageable pageable, Criteria criteria) {
135
- List<Expression> columns = <%= persistClass %>SqlHelper.getColumns(entityTable, EntityManager.ENTITY_ALIAS);
135
+ List<Expression> columns = <%= entityClass %>SqlHelper.getColumns(entityTable, EntityManager.ENTITY_ALIAS);
136
136
  <%_ reactiveEagerRelations.forEach(function(rel) { _%>
137
137
  columns.addAll(<%= rel.otherEntityNameCapitalized %>SqlHelper.getColumns(<%= rel.relationshipName %>Table, "<%= rel.relationshipName %>"));
138
138
  <%_ }); _%>
@@ -156,7 +156,7 @@ _%>
156
156
  return createQuery(null, where(EntityManager.ENTITY_ALIAS + ".<%= primaryKey.name %>").is(id)).one();
157
157
  }
158
158
 
159
- <%_ if (fieldsContainOwnerManyToMany) { _%>
159
+ <%_ if (relationshipsContainEagerLoad) { _%>
160
160
 
161
161
  @Override
162
162
  public Mono<<%= persistClass %>> findOneWithEagerRelationships(<%= primaryKey.type %> id) {
@@ -0,0 +1,37 @@
1
+ <%#
2
+ Copyright 2013-2021 the original author or authors from the JHipster project.
3
+
4
+ This file is part of the JHipster project, see https://www.jhipster.tech/
5
+ for more information.
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ https://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
18
+ -%>
19
+ package <%= packageName %>.repository;
20
+
21
+ import java.util.List;
22
+ import java.util.Optional;
23
+ <%_ if (fieldsContainUUID) { _%>
24
+ import java.util.UUID;
25
+ <%_ } _%>
26
+
27
+ import org.springframework.data.domain.Page;
28
+
29
+ import <%= packageName %>.domain.<%= persistClass %>;
30
+
31
+ public interface <%= entityClass %>RepositoryWithBagRelationships {
32
+ Optional<<%= persistClass %>> fetchBagRelationships(Optional<<%= persistClass %>> <%= entityInstance %>);
33
+
34
+ List<<%= persistClass %>> fetchBagRelationships(List<<%= persistClass %>> <%= entityInstancePlural %>);
35
+
36
+ Page<<%= persistClass %>> fetchBagRelationships(Page<<%= persistClass %>> <%= entityInstancePlural %>);
37
+ }
@@ -0,0 +1,90 @@
1
+ <%#
2
+ Copyright 2013-2021 the original author or authors from the JHipster project.
3
+
4
+ This file is part of the JHipster project, see https://www.jhipster.tech/
5
+ for more information.
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ https://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
18
+ -%>
19
+ package <%= packageName %>.repository;
20
+
21
+ import java.util.List;
22
+ import java.util.Optional;
23
+ <%_ if (fieldsContainUUID) { _%>
24
+ import java.util.UUID;
25
+ <%_ } _%>
26
+
27
+ import javax.persistence.EntityManager;
28
+
29
+ import org.hibernate.annotations.QueryHints;
30
+ import org.springframework.beans.factory.annotation.Autowired;
31
+ import org.springframework.data.domain.Page;
32
+ import org.springframework.data.domain.PageImpl;
33
+
34
+ import <%= packageName %>.domain.<%= persistClass %>;
35
+
36
+ /**
37
+ * Utility repository to load bag relationships based on https://vladmihalcea.com/hibernate-multiplebagfetchexception/
38
+ */
39
+ public class <%= entityClass %>RepositoryWithBagRelationshipsImpl implements <%= entityClass %>RepositoryWithBagRelationships {
40
+ @Autowired
41
+ private EntityManager entityManager;
42
+
43
+ @Override
44
+ public Optional<<%= persistClass %>> fetchBagRelationships(Optional<<%= persistClass %>> <%= entityInstance %>) {
45
+ return <%= entityInstance %>
46
+ <%_ for (const relationship of relationships.filter(relationship => relationship.bagRelationship)) { _%>
47
+ .map(this::fetch<%= relationship.relationshipNameCapitalizedPlural %>)
48
+ <%_ } _%>
49
+ ;
50
+ }
51
+
52
+ @Override
53
+ public Page<<%= persistClass %>> fetchBagRelationships(Page<<%= persistClass %>> <%= entityInstancePlural %>) {
54
+ return new PageImpl<>(fetchBagRelationships(<%= entityInstancePlural %>.getContent()), <%= entityInstancePlural %>.getPageable(), <%= entityInstancePlural %>.getTotalElements());
55
+ }
56
+
57
+ @Override
58
+ public List<<%= persistClass %>> fetchBagRelationships(List<<%= persistClass %>> <%= entityInstancePlural %>) {
59
+ return Optional
60
+ .of(<%= entityInstancePlural %>)
61
+ <%_ for (const relationship of relationships.filter(relationship => relationship.bagRelationship)) { _%>
62
+ .map(this::fetch<%= relationship.relationshipNameCapitalizedPlural %>)
63
+ <%_ } _%>
64
+ .get();
65
+ }
66
+ <%_ for (const relationship of relationships.filter(relationship => relationship.bagRelationship)) { _%>
67
+
68
+ <%= persistClass %> fetch<%= relationship.relationshipNameCapitalizedPlural %>(<%= persistClass %> result) {
69
+ return entityManager
70
+ .createQuery(
71
+ "select <%= entityInstance %> from <%= persistClass %> <%= entityInstance %> left join fetch <%= entityInstance %>.<%= relationship.relationshipFieldNamePlural %> where <%= entityInstance %> is :<%= entityInstance %>",
72
+ <%= persistClass %>.class
73
+ )
74
+ .setParameter("<%= entityInstance %>", result)
75
+ .setHint(QueryHints.PASS_DISTINCT_THROUGH, false)
76
+ .getSingleResult();
77
+ }
78
+
79
+ List<<%= persistClass %>> fetch<%= relationship.relationshipNameCapitalizedPlural %>(List<<%= persistClass %>> <%= entityInstancePlural %>) {
80
+ return entityManager
81
+ .createQuery(
82
+ "select distinct <%= entityInstance %> from <%= persistClass %> <%= entityInstance %> left join fetch <%= entityInstance %>.<%= relationship.relationshipFieldNamePlural %> where <%= entityInstance %> in :<%= entityInstancePlural %>",
83
+ <%= persistClass %>.class
84
+ )
85
+ .setParameter("<%= entityInstancePlural %>", <%= entityInstancePlural %>)
86
+ .setHint(QueryHints.PASS_DISTINCT_THROUGH, false)
87
+ .getResultList();
88
+ }
89
+ <%_ } _%>
90
+ }
@@ -90,7 +90,7 @@ public interface <%= entityClass %>Repository extends <% if (databaseTypeSql) {
90
90
  <%_ } _%>
91
91
  <%_ } _%>
92
92
  <%_ if (databaseTypeSql) { _%>
93
- <%_ if (fieldsContainOwnerManyToMany) { _%>
93
+ <%_ if (relationshipsContainEagerLoad) { _%>
94
94
 
95
95
  @Override
96
96
  Mono<<%= persistClass %>> findOneWithEagerRelationships(<%= primaryKey.type %> id);
@@ -153,7 +153,7 @@ interface <%= entityClass %>RepositoryInternal {
153
153
 
154
154
  Flux<<%= persistClass %>> findAllBy(Pageable pageable, Criteria criteria);
155
155
 
156
- <%_ if (fieldsContainOwnerManyToMany) { _%>
156
+ <%_ if (relationshipsContainEagerLoad) { _%>
157
157
 
158
158
  Mono<<%= persistClass %>> findOneWithEagerRelationships(<%= primaryKey.type %> id);
159
159