【问题标题】:Conflict between spring-data-cassandra and spring-data-solrspring-data-cassandra 和 spring-data-solr 之间的冲突
【发布时间】:2018-10-19 05:53:27
【问题描述】:

我目前正在从事需要 Cassandra 数据库具有搜索能力的项目。我们有 DataStax 集群,我们想使用 Spring Data 来简化数据库操作。但是,当我们创建同时拥有 @Table(对于 cassandra)和 @SolrDocument(对于 Solr)的实体时,它碰巧被破坏了。我们得到的唯一错误是下面的错误。有人遇到过这样的问题吗?

Caused by: org.springframework.data.mapping.PropertyReferenceException: No property findAll found for type ENTITYNAME!

我知道这可能是 Spring 问题,但希望找到解决过此类问题的人。 问候!

一些导致问题的示例实体:

@SolrDocument(solrCoreName = "sample_entity")
@Table("sample_entity")
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public final class SampleEntity {

    @PrimaryKey
    @Indexed(name = "id")
    private UUID id;

    private LocalDateTime created;

    private UUID foreignId;

    @Indexed(name = "name")
    private String name;

    private boolean someflag = true;
}

【问题讨论】:

    标签: solr cassandra spring-data spring-data-cassandra spring-data-solr


    【解决方案1】:

    您搞混了——如果您使用的是 DSE 搜索,那么最好通过 CQL 执行搜索,方法是在 solr_query 列中进行查询。在您的示例中,@SolrDocument 将强制使用 Solr 的 HTTP API,而@Table 将强制使用 CQL。

    您可以使用 DataStax 中的 Object Mapper 将类映射到表,如下所示:

    // STest.java
    @Table(keyspace = "test",name = "stest")
      public class STest {
        @PartitionKey
        private int id;
        private String t;
    }
    
    // STestAccessor.java
    @Accessor
    public interface STestAccessor {
        @Query("SELECT * FROM test.stest WHERE solr_query = :solr")
    
        Result<STest> getViaSolr(@Param("solr") String solr);
    }
    
    // STestMain.java
    MappingManager manager = new MappingManager(session);
    
    STestAccessor sa = manager.createAccessor(STestAccessor.class);
    Result<STest> rs = sa.getViaSolr("*:*");
    
    for (STest sTest : rs) {
        System.out.println("id=" + sTest.getId() + ", text=" + sTest.getT());
    }
    

    Here is the full code.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-19
      • 2020-12-15
      • 2011-10-26
      相关资源
      最近更新 更多