Я создаю хранилище данных Spring с Cassandra.Я должен использовать @Query
, чтобы получить какой-либо пользовательский результат с CQL вместо findBy
методов.
Я получаю исключение, что имя таблицы не настроено, похоже, что @Query
используетфактическое имя вместо использования имени сущности при вызове Кассандры.
Вот как выглядит моя установка
@Table("book")
public class BookEntity {
...
}
import java.util.List;
import org.baeldung.spring.data.cassandra.model.BookEntity;
import org.springframework.data.cassandra.repository.CassandraRepository;
import org.springframework.data.cassandra.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
@Repository
public interface BookRepository extends CassandraRepository<BookEntity> {
@Query("select b.isbn from BookEntity where and publisher=:publisher", allowFiltering = true)
List<String> findIdsWithPublisher(@Param("publisher") String publisher);
}
Когда я вызываю метод findIdsWithPublisher()
, я получаю исключение, что bookentity
не настроен.Еще один признак того, что он не использует имя сущности или имена атрибутов сущности, состоит в том, что когда я использую псевдоним в запросе, например from BookEntity b where b.publisher = ...
, или любое имя столбца, которое отличается по сущности от его собственного имени, например updatedDate (native updt_date)
, оно выдает исключения, подобные no viable alternative found for
и т. Д.
Принимает ли @Query
только собственные запросы или я что-то не так делаю?
Любая подсказка приветствуется.