diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntity.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntity.java index eb5dedf3b..e37fed1cb 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntity.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntity.java @@ -120,7 +120,6 @@ public class BasicCassandraPersistentEntity extends BasicPersistentEntity handler) { - throw new UnsupportedCassandraOperationException("Cassandra does not support associations"); } /* (non-Javadoc) diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntityUnitTests.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntityUnitTests.java index 78ffcbaee..8686cb00c 100755 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntityUnitTests.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/core/mapping/BasicCassandraPersistentEntityUnitTests.java @@ -16,7 +16,7 @@ package org.springframework.data.cassandra.core.mapping; import static org.assertj.core.api.Assertions.*; -import static org.mockito.ArgumentMatchers.isA; +import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import java.lang.annotation.ElementType; @@ -33,6 +33,8 @@ import org.springframework.beans.DirectFieldAccessor; import org.springframework.context.ApplicationContext; import org.springframework.core.annotation.AliasFor; import org.springframework.data.cassandra.core.cql.CqlIdentifier; +import org.springframework.data.mapping.Association; +import org.springframework.data.mapping.AssociationHandler; import org.springframework.data.util.ClassTypeInformation; /** @@ -141,6 +143,30 @@ public class BasicCassandraPersistentEntityUnitTests { assertThat(entity.isCompositePrimaryKey()).isTrue(); } + @Test // DATACASS-633 + @SuppressWarnings("unchecked") + public void shouldRejectAssociationCreation() { + + BasicCassandraPersistentEntity entity = new BasicCassandraPersistentEntity<>( + ClassTypeInformation.from(PrimaryKeyClassWithComposedAnnotation.class)); + + assertThatThrownBy(() -> entity.addAssociation(mock(Association.class))) + .isInstanceOf(UnsupportedCassandraOperationException.class); + } + + @Test // DATACASS-633 + @SuppressWarnings("unchecked") + public void shouldNoOpOnDoWithAssociations() { + + BasicCassandraPersistentEntity entity = new BasicCassandraPersistentEntity<>( + ClassTypeInformation.from(PrimaryKeyClassWithComposedAnnotation.class)); + + AssociationHandler handlerMock = mock(AssociationHandler.class); + entity.doWithAssociations(handlerMock); + + verifyZeroInteractions(handlerMock); + } + @Table("messages") static class Message {}