|
|
|
|
@ -16,6 +16,7 @@
@@ -16,6 +16,7 @@
|
|
|
|
|
package org.springframework.data.repository.kotlin |
|
|
|
|
|
|
|
|
|
import kotlinx.coroutines.flow.Flow |
|
|
|
|
import org.springframework.dao.OptimisticLockingFailureException |
|
|
|
|
import org.springframework.data.repository.NoRepositoryBean |
|
|
|
|
import org.springframework.data.repository.Repository |
|
|
|
|
import reactor.core.publisher.Mono |
|
|
|
|
@ -44,7 +45,9 @@ interface CoroutineCrudRepository<T, ID> : Repository<T, ID> {
@@ -44,7 +45,9 @@ interface CoroutineCrudRepository<T, ID> : Repository<T, ID> {
|
|
|
|
|
* |
|
|
|
|
* @param entity must not be null. |
|
|
|
|
* @return the saved entity. |
|
|
|
|
* @throws IllegalArgumentException in case the given entity is null. |
|
|
|
|
* @throws IllegalArgumentException in case the given entity is `null`. |
|
|
|
|
* @throws OptimisticLockingFailureException when the entity uses optimistic locking and has a version attribute with a different value from that |
|
|
|
|
* found in the persistence store. Also thrown if the entity is assumed to be present but does not exist in the database. |
|
|
|
|
*/ |
|
|
|
|
suspend fun <S : T> save(entity: S): T |
|
|
|
|
|
|
|
|
|
@ -54,7 +57,9 @@ interface CoroutineCrudRepository<T, ID> : Repository<T, ID> {
@@ -54,7 +57,9 @@ interface CoroutineCrudRepository<T, ID> : Repository<T, ID> {
|
|
|
|
|
* @param entities must not be null. |
|
|
|
|
* @return [Flow] emitting the saved entities. |
|
|
|
|
* @throws IllegalArgumentException in case the given [entities][Flow] or one of its entities is |
|
|
|
|
* null. |
|
|
|
|
* `null`. |
|
|
|
|
* @throws OptimisticLockingFailureException when at least one entity uses optimistic locking and has a version attribute with a different value from that |
|
|
|
|
* found in the persistence store. Also thrown if at least one entity is assumed to be present but does not exist in the database. |
|
|
|
|
*/ |
|
|
|
|
fun <S : T> saveAll(entities: Iterable<S>): Flow<S> |
|
|
|
|
|
|
|
|
|
@ -63,25 +68,25 @@ interface CoroutineCrudRepository<T, ID> : Repository<T, ID> {
@@ -63,25 +68,25 @@ interface CoroutineCrudRepository<T, ID> : Repository<T, ID> {
|
|
|
|
|
* |
|
|
|
|
* @param entityStream must not be null. |
|
|
|
|
* @return [Flow] emitting the saved entities. |
|
|
|
|
* @throws IllegalArgumentException in case the given [entityStream][Flow] is null. |
|
|
|
|
* @throws IllegalArgumentException in case the given [entityStream][Flow] is `null`. |
|
|
|
|
*/ |
|
|
|
|
fun <S : T> saveAll(entityStream: Flow<S>): Flow<S> |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Retrieves an entity by its id. |
|
|
|
|
* |
|
|
|
|
* @param id must not be null. |
|
|
|
|
* @param id must not be `null`. |
|
|
|
|
* @return [Mono] emitting the entity with the given id or empty if none found. |
|
|
|
|
* @throws IllegalArgumentException in case the given id is null. |
|
|
|
|
* @throws IllegalArgumentException in case the given id is `null`. |
|
|
|
|
*/ |
|
|
|
|
suspend fun findById(id: ID): T? |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Returns whether an entity with the given id exists. |
|
|
|
|
* |
|
|
|
|
* @param id must not be null. |
|
|
|
|
* @param id must not be `null`. |
|
|
|
|
* @return true if an entity with the given id exists, false otherwise. |
|
|
|
|
* @throws IllegalArgumentException in case the given id is null. |
|
|
|
|
* @throws IllegalArgumentException in case the given id is `null`. |
|
|
|
|
*/ |
|
|
|
|
suspend fun existsById(id: ID): Boolean |
|
|
|
|
|
|
|
|
|
@ -97,10 +102,10 @@ interface CoroutineCrudRepository<T, ID> : Repository<T, ID> {
@@ -97,10 +102,10 @@ interface CoroutineCrudRepository<T, ID> : Repository<T, ID> {
|
|
|
|
|
* If some or all ids are not found, no entities are returned for these IDs. |
|
|
|
|
* Note that the order of elements in the result is not guaranteed. |
|
|
|
|
* |
|
|
|
|
* @param ids must not be null nor contain any null values. |
|
|
|
|
* @param ids must not be `null` nor contain any `null` values. |
|
|
|
|
* @return [Flow] emitting the found entities. The size can be equal or less than the number of given |
|
|
|
|
* ids. |
|
|
|
|
* @throws IllegalArgumentException in case the given [ids][Iterable] or one of its items is null. |
|
|
|
|
* @throws IllegalArgumentException in case the given [ids][Iterable] or one of its items is `null`. |
|
|
|
|
*/ |
|
|
|
|
fun findAllById(ids: Iterable<ID>): Flow<T> |
|
|
|
|
|
|
|
|
|
@ -109,10 +114,10 @@ interface CoroutineCrudRepository<T, ID> : Repository<T, ID> {
@@ -109,10 +114,10 @@ interface CoroutineCrudRepository<T, ID> : Repository<T, ID> {
|
|
|
|
|
* If some or all ids are not found, no entities are returned for these IDs. |
|
|
|
|
* Note that the order of elements in the result is not guaranteed. |
|
|
|
|
* |
|
|
|
|
* @param ids must not be null nor contain any null values. |
|
|
|
|
* @param ids must not be `null` nor contain any `null` values. |
|
|
|
|
* @return [Flow] emitting the found entities. The size can be equal or less than the number of given |
|
|
|
|
* ids. |
|
|
|
|
* @throws IllegalArgumentException in case the given [ids][Iterable] or one of its items is null. |
|
|
|
|
* @throws IllegalArgumentException in case the given [ids][Iterable] or one of its items is `null`. |
|
|
|
|
*/ |
|
|
|
|
fun findAllById(ids: Flow<ID>): Flow<T> |
|
|
|
|
|
|
|
|
|
@ -125,25 +130,31 @@ interface CoroutineCrudRepository<T, ID> : Repository<T, ID> {
@@ -125,25 +130,31 @@ interface CoroutineCrudRepository<T, ID> : Repository<T, ID> {
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Deletes the entity with the given id. |
|
|
|
|
* <p> |
|
|
|
|
* If the entity is not found in the persistence store it is silently ignored. |
|
|
|
|
* |
|
|
|
|
* @param id must not be null. |
|
|
|
|
* @throws IllegalArgumentException in case the given id is null. |
|
|
|
|
* @param id must not be `null`. |
|
|
|
|
* @throws IllegalArgumentException in case the given id is `null`. |
|
|
|
|
*/ |
|
|
|
|
suspend fun deleteById(id: ID) |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Deletes a given entity. |
|
|
|
|
* |
|
|
|
|
* @param entity must not be null. |
|
|
|
|
* @throws IllegalArgumentException in case the given entity is null. |
|
|
|
|
* @param entity must not be `null`. |
|
|
|
|
* @throws IllegalArgumentException in case the given entity is `null`. |
|
|
|
|
* @throws OptimisticLockingFailureException when the entity uses optimistic locking and has a version attribute with a different value from that |
|
|
|
|
* found in the persistence store. Also thrown if the entity is assumed to be present but does not exist in the database. |
|
|
|
|
*/ |
|
|
|
|
suspend fun delete(entity: T) |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Deletes all instances of the type {@code T} with the given IDs. |
|
|
|
|
* <p> |
|
|
|
|
* Entities that aren't found in the persistence store are silently ignored. |
|
|
|
|
* |
|
|
|
|
* @param ids must not be null nor contain any null values. |
|
|
|
|
* @throws IllegalArgumentException in case the given [ids][Iterable] or one of its items is null. |
|
|
|
|
* @param ids must not be `null` nor contain any `null` values. |
|
|
|
|
* @throws IllegalArgumentException in case the given [ids][Iterable] or one of its items is `null`. |
|
|
|
|
* @since 2.5 |
|
|
|
|
*/ |
|
|
|
|
suspend fun deleteAllById(ids: Iterable<ID>) |
|
|
|
|
@ -151,9 +162,9 @@ interface CoroutineCrudRepository<T, ID> : Repository<T, ID> {
@@ -151,9 +162,9 @@ interface CoroutineCrudRepository<T, ID> : Repository<T, ID> {
|
|
|
|
|
/** |
|
|
|
|
* Deletes the given entities. |
|
|
|
|
* |
|
|
|
|
* @param entities must not be null. |
|
|
|
|
* @param entities must not be `null`. |
|
|
|
|
* @throws IllegalArgumentException in case the given [entities][Iterable] or one of its entities is |
|
|
|
|
* null. |
|
|
|
|
* `null`. |
|
|
|
|
*/ |
|
|
|
|
suspend fun deleteAll(entities: Iterable<T>) |
|
|
|
|
|
|
|
|
|
@ -161,7 +172,9 @@ interface CoroutineCrudRepository<T, ID> : Repository<T, ID> {
@@ -161,7 +172,9 @@ interface CoroutineCrudRepository<T, ID> : Repository<T, ID> {
|
|
|
|
|
* Deletes all given entities. |
|
|
|
|
* |
|
|
|
|
* @param entityStream must not be null. |
|
|
|
|
* @throws IllegalArgumentException in case the given [entityStream][Flow] is null. |
|
|
|
|
* @throws IllegalArgumentException in case the given [entityStream][Flow] is `null`. |
|
|
|
|
* @throws OptimisticLockingFailureException when at least one entity uses optimistic locking and has a version attribute with a different value from that |
|
|
|
|
* found in the persistence store. Also thrown if at least one entity is assumed to be present but does not exist in the database. |
|
|
|
|
*/ |
|
|
|
|
suspend fun <S : T> deleteAll(entityStream: Flow<S>) |
|
|
|
|
|
|
|
|
|
|