Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Couchbase SDK 3, Spring Data Couchbase 4 Integration #15645

Merged
merged 128 commits into from Aug 26, 2021
Merged
Show file tree
Hide file tree
Changes from 120 commits
Commits
Show all changes
128 commits
Select commit Hold shift + click to select a range
2fc531c
Update pom.xml, react tests, and prompts for Couchbase
gkysaad May 5, 2021
58bb457
Switch CouchbasePagingAndSortingRepository to PagingAndSortingReposit…
gkysaad May 6, 2021
ce838a4
Add gradle dependency fix [react]
gkysaad May 6, 2021
f6f5f77
Update Field import to use correct library for Spring Data 4.x
gkysaad May 6, 2021
815bb46
Couchbase generator setup
gkysaad May 6, 2021
f917fd8
update gitignore
gkysaad May 11, 2021
ffdbbf3
add couchbase searchEngine to test yo-rc.json
gkysaad May 11, 2021
858637b
fix typo
gkysaad May 11, 2021
68094ce
Spring Boot 4.x update for Couchbase imports
gkysaad May 11, 2021
1e46bfb
Fix #13544
gkysaad May 11, 2021
20adcc7
Fix #14184
gkysaad May 12, 2021
fb874d1
Fix #12300
gkysaad Jun 5, 2021
a763e01
Test cases fixes and disable flaky ones
gkysaad Jun 5, 2021
c1a284e
Fix #14745
gkysaad Jun 5, 2021
91d325b
Fix couchmove, FTS, and users
gkysaad Jun 5, 2021
f374ec1
Setup GitHub Actions to work with couchbase tests
gkysaad Jun 25, 2021
0ecf443
Fix prompt so Couchbase is only available as non-reactive
gkysaad Jul 3, 2021
46e1d8a
Remove snapshot to use latest version of Couchmove
gkysaad Jul 3, 2021
401f563
Entity ejs fixes and N1qlJoin disable
gkysaad Jul 12, 2021
866a966
Fix problems from merge conflicts
gkysaad Aug 13, 2021
f7feb1a
Updates to package-lock file
gkysaad Aug 13, 2021
719e1b0
AuthorityRepository PR comments update
gkysaad Aug 13, 2021
e1d7efc
Minor typo and bug fixes
gkysaad Aug 14, 2021
f85fe04
Fix bug in prompt.js
gkysaad Aug 14, 2021
7556024
Remove Couchbase encryption and versioning from gradle file
gkysaad Aug 14, 2021
05f6d59
Update generators/server/templates/src/main/resources/config/applicat…
gkysaad Aug 15, 2021
66779b3
Update generators/server/prompts.js
DanielFran Aug 15, 2021
f679b12
Update generators/server/templates/src/main/java/package/config/Datab…
DanielFran Aug 15, 2021
17e8c6f
Update generators/server/templates/src/main/java/package/repository/U…
DanielFran Aug 15, 2021
524ea2c
Update generators/server/templates/src/main/java/package/repository/U…
DanielFran Aug 15, 2021
1f889cd
Update generators/server/templates/src/main/java/package/repository/U…
DanielFran Aug 15, 2021
f5a6e11
Update generators/server/templates/src/main/java/package/repository/U…
DanielFran Aug 15, 2021
fb716cc
Update generators/server/templates/src/main/java/package/repository/U…
DanielFran Aug 15, 2021
f4606f2
Update generators/server/templates/src/main/java/package/service/User…
DanielFran Aug 15, 2021
1f482ca
Update generators/server/templates/src/main/java/package/service/User…
DanielFran Aug 15, 2021
642e6a3
Update generators/server/templates/src/main/resources/config/applicat…
DanielFran Aug 15, 2021
185938f
Update generators/server/templates/src/main/java/package/repository/U…
DanielFran Aug 15, 2021
533771f
Update generators/server/templates/src/main/java/package/repository/U…
DanielFran Aug 15, 2021
7a9ec6f
Change back primaryKey to variable value
gkysaad Aug 16, 2021
6c14e18
Update generators/entity-server/templates/partials/save_template.ejs
DanielFran Aug 17, 2021
ec06dcf
Update generators/entity-server/templates/partials/save_template.ejs
DanielFran Aug 17, 2021
f83f755
Update generators/server/templates/src/main/java/package/repository/C…
DanielFran Aug 17, 2021
36a865a
Update generators/server/templates/src/main/java/package/repository/C…
DanielFran Aug 17, 2021
b10dba8
Update generators/server/templates/src/main/java/package/repository/C…
DanielFran Aug 17, 2021
5ebcded
Update generators/server/templates/src/main/java/package/repository/C…
DanielFran Aug 17, 2021
018155f
Update generators/server/templates/src/main/java/package/repository/C…
DanielFran Aug 17, 2021
a405a62
Update generators/server/templates/src/main/java/package/repository/C…
DanielFran Aug 17, 2021
3d5d11c
Update generators/server/templates/src/main/java/package/repository/C…
DanielFran Aug 17, 2021
ffd66f2
Update generators/server/templates/src/main/java/package/repository/C…
DanielFran Aug 17, 2021
858c465
Update generators/server/templates/src/main/java/package/repository/C…
DanielFran Aug 17, 2021
92a49ef
Update generators/server/templates/src/main/java/package/repository/C…
DanielFran Aug 17, 2021
ca211ad
Update generators/server/templates/src/main/java/package/repository/C…
DanielFran Aug 17, 2021
c938146
Add back search engine test util for retry
gkysaad Aug 16, 2021
77ca534
Add back retry to search test cases
gkysaad Aug 16, 2021
3281903
Fix package-lock.json conflicts
gkysaad Aug 17, 2021
2066b81
Remove unused repository files
gkysaad Aug 17, 2021
1f240c7
Remove id not null check
gkysaad Aug 18, 2021
d7b2046
Fix find all activated users pageable
gkysaad Aug 18, 2021
7b6581d
Refactor EntityRepository and reintroduce N1qlCouchbaseRepository
gkysaad Aug 19, 2021
767c340
Fix N1qlCouchbaseRepository
gkysaad Aug 19, 2021
7241b2a
Add back "ByIdNotNull" to UserService for reactive case (sql)
gkysaad Aug 19, 2021
96bab7c
Fix for ByIdNotNull
gkysaad Aug 19, 2021
d6c4864
Use JOIN/NEST queries instead of N1qlJoin
tchlyah Aug 17, 2021
e1c7905
Merge pull request #1 from tchlyah/temp-fix-join
gkysaad Aug 19, 2021
15c2106
Fix Couchbase entity relationships
tchlyah Aug 22, 2021
153713d
Fix format
tchlyah Aug 22, 2021
dd1dcb0
Update .gitignore
gkysaad Aug 22, 2021
06a39c8
Merge pull request #2 from tchlyah/fix/cb-relationships
gkysaad Aug 22, 2021
b54b63d
Update .github/workflows/react.yml
gkysaad Aug 22, 2021
e7309e9
Update .github/workflows/react.yml
gkysaad Aug 22, 2021
db00441
Update generators/server/templates/src/main/java/package/repository/U…
gkysaad Aug 22, 2021
d8843b3
Update generators/server/templates/src/main/java/package/repository/U…
gkysaad Aug 22, 2021
b61e4d3
Update .github/workflows/react.yml
gkysaad Aug 22, 2021
3f9fb46
Update .github/workflows/react.yml
gkysaad Aug 22, 2021
3485134
Update generators/cleanup.js
gkysaad Aug 22, 2021
bfee2ee
Update generators/cleanup.js
gkysaad Aug 22, 2021
48aa42d
Update .github/workflows/angular.yml
gkysaad Aug 22, 2021
f20c9e6
Switch ngx-couchbase-search to ngx-gradle-couchbase-search
gkysaad Aug 22, 2021
c96a796
Update .github/workflows/vue.yml
gkysaad Aug 22, 2021
dcf724b
Update .github/workflows/vue.yml
gkysaad Aug 22, 2021
b2b630a
Change cleanup version to 7.1.1
gkysaad Aug 22, 2021
c7e66bb
Update generators/entity-server/templates/src/test/java/package/web/r…
gkysaad Aug 22, 2021
853cfed
Update generators/entity-server/templates/src/test/java/package/web/r…
gkysaad Aug 22, 2021
d41b53a
Update generators/entity-server/templates/src/test/java/package/web/r…
gkysaad Aug 22, 2021
e09b3da
Update generators/server/templates/src/test/java/package/web/rest/Use…
gkysaad Aug 22, 2021
37d43e5
Update generators/server/templates/src/test/java/package/web/rest/Acc…
gkysaad Aug 22, 2021
1e0996d
Update generators/server/prompts.js
gkysaad Aug 22, 2021
a0ca318
Update generators/server/prompts.js
gkysaad Aug 22, 2021
3c8d1b6
Update generators/server/templates/src/main/java/package/repository/P…
gkysaad Aug 22, 2021
dd181c5
Update generators/server/templates/src/main/java/package/web/rest/Pub…
gkysaad Aug 22, 2021
890dec5
Update generators/server/templates/src/main/java/package/repository/U…
gkysaad Aug 22, 2021
87d2f75
Update generators/server/templates/src/test/java/package/web/rest/Acc…
gkysaad Aug 22, 2021
9ff957a
Update generators/server/templates/src/main/java/package/service/User…
gkysaad Aug 22, 2021
ea6f9bb
Update generators/server/templates/src/main/java/package/web/rest/Pub…
gkysaad Aug 22, 2021
61ab1b0
Update generators/server/templates/src/main/java/package/web/rest/Pub…
gkysaad Aug 22, 2021
ab9c134
Update generators/server/templates/src/main/java/package/web/rest/Pub…
gkysaad Aug 22, 2021
ca9b409
Update generators/server/templates/src/main/java/package/web/rest/Pub…
gkysaad Aug 22, 2021
298a53a
Update generators/server/templates/src/main/java/package/web/rest/Pub…
gkysaad Aug 22, 2021
2172f5c
Update generators/server/templates/src/main/java/package/web/rest/Pub…
gkysaad Aug 22, 2021
fe98cab
Remove duplicate code
gkysaad Aug 22, 2021
228719d
Add back Couchbase custom @Field key specification
gkysaad Aug 22, 2021
670fa47
Remove ejs error
gkysaad Aug 22, 2021
13a5800
Change version to 7.1.1
gkysaad Aug 22, 2021
cc34621
Update generators/server/templates/src/main/java/package/web/rest/Pub…
gkysaad Aug 23, 2021
c43addb
Update generators/server/templates/src/main/java/package/repository/A…
gkysaad Aug 23, 2021
64d17a2
Update generators/server/templates/src/main/java/package/repository/A…
gkysaad Aug 23, 2021
69048de
Update generators/server/templates/build.gradle.ejs
gkysaad Aug 23, 2021
ac3de1b
Update generators/server/templates/src/test/java/package/web/rest/Use…
gkysaad Aug 23, 2021
8f30405
Update package.json
gkysaad Aug 23, 2021
0f3480c
Update generators/server/templates/src/main/java/package/repository/A…
gkysaad Aug 23, 2021
9819343
Update generators/cleanup.js
gkysaad Aug 23, 2021
70b49d8
Update generators/server/templates/src/main/java/package/repository/U…
gkysaad Aug 23, 2021
d4990a2
Update generators/server/templates/src/main/java/package/repository/U…
gkysaad Aug 23, 2021
561e5f3
Revert users initialization to snake_case
gkysaad Aug 23, 2021
f02de93
Refactor PersistentTokenRepository
gkysaad Aug 23, 2021
67d3a7b
Update generators/entity-server/templates/src/main/java/package/repos…
mshima Aug 24, 2021
c40befb
Remove wait time from EntityResourceIT
gkysaad Aug 25, 2021
5ebf471
Revert "Revert users initialization to snake_case"
gkysaad Aug 25, 2021
e51b9e0
Revert "Add back Couchbase custom @Field key specification"
gkysaad Aug 25, 2021
7c952c1
Remove custom key from all Couchbase fields (change to camelCase)
gkysaad Aug 25, 2021
7e980e3
Remove Couchbase code from PersistentTokenRepository
gkysaad Aug 25, 2021
cfdc6c0
Refactor EntityRepository to EntityRepository_couchbase
gkysaad Aug 26, 2021
5e92e18
Merge remote-tracking branch 'upstream/main' into couchbase
mshima Aug 26, 2021
3c0854d
Lint fix.
mshima Aug 26, 2021
aa15e52
Fixup EntityRepository/couchbase
mshima Aug 26, 2021
c63aedf
Disable couchbase tests.
mshima Aug 26, 2021
13dfcfc
Don't set default language.
mshima Aug 26, 2021
e8a0d56
Update snapshot.
mshima Aug 26, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
14 changes: 14 additions & 0 deletions .github/workflows/angular.yml
Expand Up @@ -70,6 +70,8 @@ jobs:
- ngx-mariadb-oauth2-infinispan
- ngx-mongodb-kafka-cucumber
- ngx-h2mem-ws-nol2
- ngx-couchbase
gkysaad marked this conversation as resolved.
Show resolved Hide resolved
- ngx-gradle-couchbase-search
- ngx-gradle-fr
- ngx-gradle-mysql-es-noi18n-mapsid
- ngx-gradle-mariadb-oauth2-infinispan
Expand Down Expand Up @@ -115,6 +117,18 @@ jobs:
war: 0
e2e: 1
testcontainers: 0
- app-sample: ngx-couchbase
entity: couchbase
environment: prod
war: 0
e2e: 1
testcontainers: 1
- app-sample: ngx-gradle-couchbase-search
entity: couchbase
environment: prod
war: 0
e2e: 1
testcontainers: 1
- app-sample: ngx-gradle-fr
gkysaad marked this conversation as resolved.
Show resolved Hide resolved
entity: sql
environment: prod
Expand Down
7 changes: 7 additions & 0 deletions generators/cleanup.js
Expand Up @@ -487,6 +487,13 @@ function cleanupOldServerFiles(generator, javaDir, testDir, mainResourceDir, tes
if (generator.isJhipsterVersionLessThan('7.0.0-beta.1')) {
generator.removeFile(`${javaDir}config/CloudDatabaseConfiguration.java`);
}
if (generator.isJhipsterVersionLessThan('7.1.1')) {
generator.removeFile(`${javaDir}repository/ReactiveN1qlCouchbaseRepository.java `);
generator.removeFile(`${testDir}config/DatabaseConfigurationIT.java`);
if (generator.searchEngine !== 'couchbase') {
generator.removeFile(`${javaDir}repository/CustomN1qlCouchbaseRepository.java`);
}
}
gkysaad marked this conversation as resolved.
Show resolved Hide resolved
}

/**
Expand Down
4 changes: 2 additions & 2 deletions generators/entity-server/templates/partials/save_template.ejs
Expand Up @@ -22,7 +22,7 @@ const mapper = entityInstance + 'Mapper';
const dtoToEntity = mapper + '.' + 'toEntity';
const entityToDto = mapper + '.' + 'toDto';
const entityToDtoReference = mapper + '::' + 'toDto';
const returnPrefix = (returnDirectly && !searchEngine) ? 'return' : instanceType + ' result =';
const returnPrefix = (returnDirectly && !searchEngineElasticsearch) ? 'return' : instanceType + ' result =';
let resultEntity;
let mapsIdEntityInstance;
let mapsIdRepoInstance;
Expand Down Expand Up @@ -56,7 +56,7 @@ if (isUsingMapsId) {
<%_ } _%>
<%= returnPrefix %> <%= entityInstance %>Repository.save(<%= persistInstance %>);
<%_ } _%>
<%_ if (searchEngine) { _%>
<%_ if (searchEngineElasticsearch) { _%>
<%= entityInstance %>SearchRepository.save(<%= resultEntity %>);
<%_ if (returnDirectly) { _%>
return result;
Expand Down
Expand Up @@ -30,14 +30,13 @@ import static org.springframework.data.couchbase.core.mapping.id.GenerationStrat
<&_ if (fragment.importSection) { -&>
<%_ if (!embedded) { _%>
import org.springframework.data.annotation.Id;
import org.springframework.data.couchbase.core.mapping.Document;
import org.springframework.data.couchbase.core.mapping.id.GeneratedValue;
import org.springframework.data.couchbase.core.mapping.id.IdPrefix;
<%_ } _%>
import com.couchbase.client.java.repository.annotation.Field;
import org.springframework.data.couchbase.core.mapping.Document;
import org.springframework.data.couchbase.core.mapping.Field;
<%_ if (relationships.length > 0) { _%>
import org.springframework.data.couchbase.core.query.FetchType;
import org.springframework.data.couchbase.core.query.N1qlJoin;
import com.fasterxml.jackson.annotation.JsonIgnore;
import java.util.stream.Collectors;
<%_ } _%>
<&_ } -&>
Expand Down Expand Up @@ -68,18 +67,18 @@ import java.util.stream.Collectors;
@GeneratedValue(strategy = UNIQUE, delimiter = ID_DELIMITER)
<%_ } _%>
<%_ } else { _%>
@Field("<%= field.fieldNameUnderscored %>")
@Field
<%_ } _%>
<&_ } -&>
<%_ } -%>

<%_ for (const field of fields.filter(field => field.fieldWithContentType)) { _%>
<&_ if (fragment.field<%- field.fieldNameCapitalized %>ContentTypeAnnotationSection) { -&>
@Field("<%= field.fieldNameUnderscored %>_content_type")
@Field
<&_ } -&>
<%_ } -%>

<%_ for (const relationship of relationships) { _%>
<%_/* for (const relationship of relationships) { _%>
<&_ if (fragment.relationship<%- relationship.relationshipNameCapitalized %>AnnotationSection) { -&>
<%_ if (relationship.relationshipOneToMany) { _%>
<%_ if (!relationship.otherEntity.embedded) { _%>
Expand All @@ -100,14 +99,17 @@ import java.util.stream.Collectors;

<&_ } -&>
<%_ } -%>
<% Commented out until N1qlJoin support is fixed */%>

<&_ if (fragment.classAdditionalRelationshipsSection) { -&>
<%_ for (const relationship of relationships) { _%>
<%_ if (!relationship.id) { _%>
<%_ if (!relationship.id && !relationship.otherEntity.embedded) { _%>
<%_ if (relationship.collection) { _%>
@JsonIgnore
@Field("<%= relationship.relationshipFieldNamePlural %>")
gkysaad marked this conversation as resolved.
Show resolved Hide resolved
private Set<String> <%= relationship.relationshipFieldName %>Ids = new HashSet<>();
<%_ } else if (relationship.ownerSide) { _%>
@JsonIgnore
@Field("<%= relationship.relationshipFieldName %>")
private <%= relationship.otherEntity.primaryKey.type %> <%= relationship.relationshipFieldName %>Id;
<%_ } _%>
Expand Down Expand Up @@ -173,7 +175,7 @@ import java.util.stream.Collectors;
this.<%= relationship.relationshipFieldNamePlural %>.add(<%= relationship.otherEntityName %>);
<%_ if (!relationship.otherEntity.embedded || embedded && relationship.ownerSide) { _%>
<%_ if (!relationship.otherEntity.embedded) { _%>
this.<%= relationship.relationshipFieldName %>Ids.add(<%= relationship.otherEntityName %>.get<%= primaryKey.nameCapitalized %>());
this.<%= relationship.relationshipFieldName %>Ids.add(<%= relationship.otherEntityName %>.get<%= relationship.otherEntity.primaryKey.nameCapitalized %>());
<%_ } _%>
<%_ if (relationship.otherRelationship) { _%>
<%_ if (!relationship.otherRelationship.collection) { _%>
Expand All @@ -194,7 +196,7 @@ import java.util.stream.Collectors;
this.<%= relationship.relationshipFieldNamePlural %>.remove(<%= relationship.otherEntityName %>);
<%_ if (!relationship.otherEntity.embedded || (embedded && relationship.ownerSide)) { _%>
<%_ if (!relationship.otherEntity.embedded) { _%>
this.<%= relationship.relationshipFieldName %>Ids.remove(<%= relationship.otherEntityName %>.get<%= primaryKey.nameCapitalized %>());
this.<%= relationship.relationshipFieldName %>Ids.remove(<%= relationship.otherEntityName %>.get<%= relationship.otherEntity.primaryKey.nameCapitalized %>());
<%_ } _%>
<%_ if (relationship.otherRelationship) { _%>
<%_ if (!relationship.otherRelationship.collection) { _%>
Expand Down
Expand Up @@ -20,7 +20,7 @@ package <%= packageName %>.repository;

import <%= packageName %>.domain.<%= persistClass %>;

<%_ if (relationshipsContainEagerLoad) { _%>
<%_ if (relationshipsContainEagerLoad || databaseTypeCouchbase) { _%>
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
<%_ } _%>
Expand All @@ -38,9 +38,13 @@ import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.neo4j.repository.Neo4jRepository;
<%_ } _%>
<%_ if (databaseTypeCouchbase) { _%>
gkysaad marked this conversation as resolved.
Show resolved Hide resolved
import <%= packageName %>.repository.search.SearchCouchbaseRepository;
<%_ if (relationshipsContainEagerLoad) { _%>
import org.springframework.data.couchbase.core.query.Query;
import com.couchbase.client.java.query.QueryScanConsistency;
import org.springframework.data.couchbase.repository.ScanConsistency;
<%_ if (relationships.length != 0) { _%>
import org.springframework.data.couchbase.repository.Query;
import org.springframework.data.domain.PageImpl;
import java.util.Optional;
import static <%= packageName %>.repository.N1qlCouchbaseRepository.pageableStatement;
<%_ } _%>
<%_ } _%>
<%_ if (databaseTypeCassandra) { _%>
Expand All @@ -56,7 +60,7 @@ if (databaseTypeSql || databaseTypeMongodb || databaseTypeCouchbase) {
}
}
_%>
<%_ if (importList) { _%>
<%_ if (importList || databaseTypeCouchbase) { _%>
import java.util.List;
<%_ } _%>
<%_ if (relationshipsContainEagerLoad) { _%>
Expand All @@ -75,7 +79,7 @@ import java.util.UUID;
@SuppressWarnings("unused")
<%_ } _%>
@Repository
public interface <%= entityClass %>Repository extends <% if (databaseTypeSql) { %>JpaRepository<% } %><% if (databaseTypeMongodb) { %>MongoRepository<% } %><% if (databaseTypeNeo4j) { %>Neo4jRepository<% } %><% if (databaseTypeCassandra) { %>CassandraRepository<% } %><% if (databaseTypeCouchbase) { %>N1qlCouchbaseRepository<% } %><<%= persistClass %>, <%= primaryKey.type %>><% if (jpaMetamodelFiltering) { %>, JpaSpecificationExecutor<<%= persistClass %>><% } %><% if (searchEngineCouchbase) { %>, SearchCouchbaseRepository<<%= persistClass %>, <%= primaryKey.type %>><% } %> {
public interface <%= entityClass %>Repository extends <% if (databaseTypeSql) { %>JpaRepository<% } %><% if (databaseTypeMongodb) { %>MongoRepository<% } %><% if (databaseTypeNeo4j) { %>Neo4jRepository<% } %><% if (databaseTypeCassandra) { %>CassandraRepository<% } %><% if (databaseTypeCouchbase) { %>N1qlCouchbaseRepository<% } %><<%= persistClass %>, <%= primaryKey.type %>><% if (jpaMetamodelFiltering) { %>, JpaSpecificationExecutor<<%= persistClass %>><% } %> {
<%_
for (const relationship of relationships) {
if (relationship.relationshipManyToOne && relationship.otherEntityUser && databaseTypeSql) { _%>
Expand Down Expand Up @@ -107,17 +111,63 @@ public interface <%= entityClass %>Repository extends <% if (databaseTypeSql) {
} %> where <%= entityInstanceDbSafe %>.id =:id")
Optional<<%= persistClass %>> findOneWithEagerRelationships(@Param("id") <%= primaryKey.type %> id);
<%_
} else if (databaseTypeMongodb || databaseTypeCouchbase) { _%>
} else if (databaseTypeMongodb) { _%>

@Query("<%= (databaseTypeMongodb) ? '{}' : '#{#n1ql.selectEntity} WHERE #{#n1ql.filter}' %>")
@Query("{}")
Page<<%= persistClass %>> findAllWithEagerRelationships(Pageable pageable);

@Query("<%= (databaseTypeMongodb) ? '{}' : '#{#n1ql.selectEntity} WHERE #{#n1ql.filter}' %>")
@Query("{}")
List<<%= persistClass %>> findAllWithEagerRelationships();

@Query("<%- (databaseTypeMongodb) ? "{'id': ?0}" : "#{#n1ql.selectEntity} USE KEYS $1 WHERE #{#n1ql.filter}" %>")
@Query("{'id': ?0}")
Optional<<%= persistClass %>> findOneWithEagerRelationships(<%= primaryKey.type %> id);
<%_
}
} _%>
}

if (databaseTypeCouchbase && relationships.length != 0) { %>

String SELECT = "SELECT meta(b).id as __id, meta(b).cas as __cas, b.*" + <%
for (const relationship of relationships) {
if (relationship.collection) {
%> ", (SELECT `<%= relationship.relationshipFieldName %>`.*, meta(`<%= relationship.relationshipFieldName %>`).id FROM `<%= relationship.relationshipFieldNamePlural %>` `<%= relationship.relationshipFieldName %>`) as `<%= relationship.relationshipFieldNamePlural %>`" + <%
} else {
%> ", (SELECT `<%= relationship.relationshipFieldName %>`.*, meta(`<%= relationship.relationshipFieldName %>`).id)[0] as `<%= relationship.relationshipFieldName %>`" + <%
}
} %>
" FROM #{#n1ql.bucket} b";

String JOIN = <%
relationships.forEach(function (relationship, index) {
if (!relationship.collection) { %>
" LEFT JOIN #{#n1ql.bucket} `<%= relationship.relationshipFieldName %>` ON KEYS b.`<%= relationship.relationshipFieldName %>`"<%
} else { %>
" LEFT NEST #{#n1ql.bucket} `<%= relationship.relationshipFieldNamePlural %>` ON KEYS b.`<%= relationship.relationshipFieldNamePlural %>`"<%
}
if (index < relationships.length - 1) { %>
+ <%
}
}); %>;


default Page<<%= persistClass %>> findAll(Pageable pageable) {
return new PageImpl<>(
findAllWithPagination(pageableStatement(pageable, "b")),
pageable,
count()
);
}

@Query(SELECT + JOIN + " WHERE b.#{#n1ql.filter} #{[0]}")
@ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
List<<%= persistClass %>> findAllWithPagination(String pageableStatement);

@Query(SELECT + JOIN + " WHERE b.#{#n1ql.filter}")
@ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
List<<%= persistClass %>> findAll();

@Query(SELECT + " USE KEYS $1" + JOIN)
@ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
Optional<<%= persistClass %>> findById(String id);<%
} _%>
}
Expand Up @@ -8,6 +8,7 @@
"type_field": "_class"
},
"mapping": {
"analysis": {},
"default_analyzer": "standard",
"default_datetime_parser": "dateTimeOptional",
"default_field": "_all",
Expand All @@ -29,9 +30,11 @@
},
"store": {
"indexType": "scorch",
"kvStoreName": ""
"segmentVersion": 15
}
},
"sourceType": "couchbase",
"sourceName": "${bucket}"
"sourceName": "${bucket}",
"uuid": "",
"name": "<%= entityClass.toLowerCase() %>"
}
Expand Up @@ -886,7 +886,7 @@ _%>
if (field.fieldTypeZonedDateTime) { %>)<% } else
if (!field.fieldTypeString) { %>.toString()<% } %>))<%= !reactive ? ')' : '' %><%_ } _%>;
}
<% if (fieldsContainOwnerManyToMany && !databaseTypeNeo4j) { %>
<% if (fieldsContainOwnerManyToMany && !databaseTypeNeo4j && !databaseTypeCouchbase) { %>
@SuppressWarnings({"unchecked"})
void getAll<%= entityClassPlural %>WithEagerRelationshipsIsEnabled() <% if (!reactive) { %>throws Exception <% } %>{
<%_ if (!serviceNo) { _%>
Expand Down Expand Up @@ -1164,7 +1164,7 @@ _%>
<%= relationship.relationshipFieldName %> = TestUtil.findAll(em, <%= asEntity(relationship.otherEntityNameCapitalized) %>.class).get(0);
}
<%_ } else { _%>
<%= asEntity(relationship.otherEntityNameCapitalized) %> <%= relationship.relationshipFieldName %> = <%= relationship.otherEntityNameCapitalized %>ResourceIT.createEntity(em);
<%= asEntity(relationship.otherEntityNameCapitalized) %> <%= relationship.relationshipFieldName %> = <%= relationship.otherEntityNameCapitalized %>ResourceIT.createEntity(em);
<%_ } _%>
em.persist(<%= relationship.relationshipFieldName %>);
em.flush();
Expand Down
4 changes: 2 additions & 2 deletions generators/entity/index.js
Expand Up @@ -791,8 +791,8 @@ class EntityGenerator extends BaseBlueprintGenerator {
(this.context.paginate !== PAGINATION &&
relationship.relationshipType === 'many-to-many' &&
relationship.ownerSide === true)) &&
// Neo4j eagerly loads relations by default
this.context.databaseType !== NEO4J;
// Neo4j & Couchbase eagerly loads relations by default
![NEO4J, COUCHBASE].includes(this.context.databaseType);
});
this.context.relationshipsContainEagerLoad = this.context.relationships.some(relationship => relationship.relationshipEagerLoad);
this.context.eagerRelations = this.context.relationships.filter(rel => rel.relationshipEagerLoad);
Expand Down