diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraOperations.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraOperations.java index 52d38f49f..98921ac1d 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraOperations.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraOperations.java @@ -244,16 +244,6 @@ public interface CassandraOperations { */ T selectOneById(Object id, Class entityClass) throws DataAccessException; - /** - * Select objects for the given {@code entityClass} and {@code ids}. - * - * @param ids must not be {@literal null}. - * @param entityClass The entity type must not be {@literal null}. - * @return the converted results - * @throws DataAccessException if there is any problem executing the query. - */ - List selectBySimpleIds(Iterable ids, Class entityClass) throws DataAccessException; - /** * Insert the given entity and return the entity if the insert was applied. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraTemplate.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraTemplate.java index f8864b172..e9901c4bb 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraTemplate.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraTemplate.java @@ -15,6 +15,9 @@ */ package org.springframework.data.cassandra.core; +import lombok.NonNull; +import lombok.Value; + import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -22,9 +25,6 @@ import java.util.stream.Collectors; import java.util.stream.Stream; import java.util.stream.StreamSupport; -import lombok.NonNull; -import lombok.Value; - import org.springframework.dao.DataAccessException; import org.springframework.data.cassandra.SessionFactory; import org.springframework.data.cassandra.core.convert.CassandraConverter; @@ -399,29 +399,6 @@ public class CassandraTemplate implements CassandraOperations { return selectOne(select, entityClass); } - @Override - public List selectBySimpleIds(Iterable ids, Class entityClass) throws DataAccessException { - - Assert.notNull(ids, "Ids must not be null"); - Assert.notNull(entityClass, "EntityClass must not be null"); - - CassandraPersistentEntity entity = getMappingContext().getRequiredPersistentEntity(entityClass); - - CassandraPersistentProperty idProperty = entity.getRequiredIdProperty(); - - if (idProperty.isCompositePrimaryKey()) { - throw new IllegalArgumentException(String.format( - "Entity class [%s] uses a composite primary key class [%s] which this method can't support", - entityClass.getName(), idProperty.getType().getName())); - } - - Select select = QueryBuilder.select().all().from(entity.getTableName().toCql()); - - select.where(QueryBuilder.in(idProperty.getColumnName().toCql(), toList(ids))); - - return select(select, entityClass); - } - /* * (non-Javadoc) * @see org.springframework.data.cassandra.core.CassandraOperations#insert(java.lang.Object) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraEntityInformation.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraEntityInformation.java index dc827d2f6..1d3fa2381 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraEntityInformation.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/query/CassandraEntityInformation.java @@ -25,4 +25,11 @@ import org.springframework.data.repository.core.EntityInformation; */ public interface CassandraEntityInformation extends EntityInformation, CassandraEntityMetadata { + /** + * Returns the attribute that the id will be persisted to. + * + * @return + * @since 2.0 + */ + String getIdAttribute(); } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/MappingCassandraEntityInformation.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/MappingCassandraEntityInformation.java index 9f0212f00..f38b79fa9 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/MappingCassandraEntityInformation.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/MappingCassandraEntityInformation.java @@ -83,6 +83,14 @@ public class MappingCassandraEntityInformation extends AbstractEntityInfo return (Class) MapId.class; } + /* (non-Javadoc) + * @see org.springframework.data.cassandra.repository.query.CassandraEntityInformation#getIdAttribute() + */ + @Override + public String getIdAttribute() { + return entityMetadata.getRequiredIdProperty().getName(); + } + /* (non-Javadoc) * @see org.springframework.data.cassandra.repository.query.CassandraEntityMetadata#getTableName() */ diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/SimpleCassandraRepository.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/SimpleCassandraRepository.java index 5c3aa770f..692a8d80f 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/SimpleCassandraRepository.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/repository/support/SimpleCassandraRepository.java @@ -15,6 +15,8 @@ */ package org.springframework.data.cassandra.repository.support; +import static org.springframework.data.cassandra.core.query.Criteria.*; + import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; @@ -26,8 +28,11 @@ import org.springframework.data.cassandra.core.CassandraOperations; import org.springframework.data.cassandra.core.CassandraTemplate; import org.springframework.data.cassandra.core.convert.CassandraConverter; import org.springframework.data.cassandra.core.mapping.CassandraPersistentEntity; +import org.springframework.data.cassandra.core.query.Query; import org.springframework.data.cassandra.repository.CassandraRepository; import org.springframework.data.cassandra.repository.query.CassandraEntityInformation; +import org.springframework.data.util.StreamUtils; +import org.springframework.data.util.Streamable; import org.springframework.util.Assert; import com.datastax.driver.core.querybuilder.Insert; @@ -101,8 +106,8 @@ public class SimpleCassandraRepository implements CassandraRepository persistentEntity = - converter.getMappingContext().getRequiredPersistentEntity(entity.getClass()); + CassandraPersistentEntity persistentEntity = converter.getMappingContext() + .getRequiredPersistentEntity(entity.getClass()); Map toInsert = new LinkedHashMap<>(); @@ -197,7 +202,10 @@ public class SimpleCassandraRepository implements CassandraRepository idCollection = Streamable.of(ids).stream().collect(StreamUtils.toUnmodifiableList()); + + return operations.select(Query.query(where(entityInformation.getIdAttribute()).in(idCollection)), + entityInformation.getJavaType()); } /* (non-Javadoc)