Accept entity parameters to repository methods. (#1595)

Closed #1586.
This commit is contained in:
Michael Reiche
2022-10-31 06:34:02 -10:00
committed by GitHub
parent 832f314953
commit 932901e709
5 changed files with 66 additions and 16 deletions

View File

@@ -19,6 +19,7 @@ package org.springframework.data.couchbase.domain;
import java.util.List;
import org.springframework.data.couchbase.repository.CouchbaseRepository;
import org.springframework.data.couchbase.repository.Query;
import org.springframework.data.couchbase.repository.ScanConsistency;
import org.springframework.stereotype.Repository;
@@ -35,4 +36,8 @@ public interface UserSubmissionRepository extends CouchbaseRepository<UserSubmis
@ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
List<UserSubmission> findByUsername(String username);
@Query("UPDATE #{#n1ql.bucket} set address=$2 where meta().id=$1")
@ScanConsistency(query = QueryScanConsistency.REQUEST_PLUS)
List<Airport> setByIdAddress(String id, Address abc);
}

View File

@@ -368,14 +368,14 @@ public class CouchbaseRepositoryQueryIntegrationTests extends ClusterAwareIntegr
AirportRepositoryScanConsistencyTest airportRepositoryRP = (AirportRepositoryScanConsistencyTest) ac
.getBean("airportRepositoryScanConsistencyTest");
List<Airport> sizeBeforeTest = (List<Airport>)airportRepositoryRP.findAll();
List<Airport> sizeBeforeTest = (List<Airport>) airportRepositoryRP.findAll();
assertEquals(0, sizeBeforeTest.size());
boolean notFound = false;
for (int i = 0; i < 100; i++) {
Airport vie = new Airport("airports::vie", "vie", "low9");
Airport saved = airportRepositoryRP.save(vie);
List<Airport> allSaved = (List<Airport>)airportRepositoryRP.findAll();
List<Airport> allSaved = (List<Airport>) airportRepositoryRP.findAll();
couchbaseTemplate.removeById(Airport.class).one(saved.getId());
if (allSaved.isEmpty()) {
notFound = true;
@@ -542,8 +542,7 @@ public class CouchbaseRepositoryQueryIntegrationTests extends ClusterAwareIntegr
// set version == 0 so save() will be an upsert, not a replace
Airport saved = airportRepository.save(vie.clearVersion());
try {
airport2 = airportRepository.withOptions(queryOptions().scanConsistency(NOT_BOUNDED))
.iata(saved.getIata());
airport2 = airportRepository.withOptions(queryOptions().scanConsistency(NOT_BOUNDED)).iata(saved.getIata());
if (airport2 == null) {
break;
}
@@ -679,7 +678,7 @@ public class CouchbaseRepositoryQueryIntegrationTests extends ClusterAwareIntegr
airportRepository.saveAll(
Arrays.stream(iatas).map((iata) -> new Airport("airports::" + iata, iata, iata.toLowerCase(Locale.ROOT)))
.collect(Collectors.toSet()));
couchbaseTemplate.findByQuery(Airport.class).withConsistency(REQUEST_PLUS).all();
List<Airport> aList = couchbaseTemplate.findByQuery(Airport.class).withConsistency(REQUEST_PLUS).all();
Long count = airportRepository.countFancyExpression(asList("JFK"), asList("jfk"), false);
assertEquals(1, count);
@@ -842,6 +841,24 @@ public class CouchbaseRepositoryQueryIntegrationTests extends ClusterAwareIntegr
}
}
@Test
void updateObject() throws Exception {
UserSubmission userSubmission = new UserSubmission();
userSubmission.setId("123");
try {
userSubmission.setUsername("updateObject");
userSubmissionRepository.save(userSubmission);
Address address = new Address(); // plaintext address with encrypted street
address.setStreet("Olcott Street");
address.setCity("Santa Clara");
userSubmissionRepository.setByIdAddress(userSubmission.getId(), address);
Optional<UserSubmission> fetched = userSubmissionRepository.findById(userSubmission.getId());
assertEquals(address, fetched.get().getAddress());
} finally {
airportRepository.deleteById(userSubmission.getId());
}
}
@Test
void stringDeleteTest() throws Exception {
Airport airport = new Airport("airports::vie", "vie", "lowx");