Я пытаюсь использовать Spring Data Cassandra, используя класс первичного ключа Composite.Но когда я пытаюсь запросить данные, я получаю исключение:
org.springframework.data.repository.query.QueryCreationException: Не удалось создать запрос для публичного абстрактного java.util.List com.amdocs.cassandrapoc.repository.ServiceRepository.findByKey (com.amdocs.cassandrapoc.entities.Key)!Причина: невозможно напрямую использовать составной первичный ключ.Ссылка на свойство составного первичного ключа
Это мой код:
@PrimaryKeyClass
public class Key implements Serializable {
@PrimaryKeyColumn(name = "id", ordinal = 0, type =
PrimaryKeyType.PARTITIONED)
@CassandraType(type = DataType.Name.UUID)
private UUID id;
@PrimaryKeyColumn(name = "tenant", ordinal = 1, type =
PrimaryKeyType.PARTITIONED)
@CassandraType(type = DataType.Name.TEXT)
private String tenant;
(Equals, hashcode, getters, setters omitted)
}
Table(value = "service")
public class Service implements Serializable {
@PrimaryKey
private Key key;
@Column
private String value;
(constructors, setters, getters omitted)
}
@Repository
public interface ServiceRepository extends CassandraRepository<Service, Key> {
List<Service> findByKey(Key key);
}
Вот как я создаю таблицу (используя встроенные Cassandra и junit):
@Autowired
private CassandraAdminOperations adminTemplate;
private final String DATA_TABLE_NAME = "service";
@Before
public void createTable() {
adminTemplate.createTable(
true, CqlIdentifier.of(DATA_TABLE_NAME),
Service.class, new HashMap<String, Object>());
}
Что я сделал не так?