Solr: поле @Dynamic не работает с запросом выбора - PullRequest
0 голосов
/ 10 апреля 2019

У меня был документ Solr, как показано ниже:

@SolrDocument(collection = "test-core")
public class TestCore {

    @Id
    @Indexed
    private Integer id;

    @Indexed(name = "name", type = "string")
    private String name;

    @Dynamic
    @Field("mappedField_*")
    private Map<String, String> mappedFieldValues;
}

Его записи успешно сохраняются в solr, как показано на снимке ниже:

{
  "responseHeader":{
    "status":0,
    "QTime":0,
    "params":{
      "q":"*:*",
      "_":"1554871478940"}},
  "response":{"numFound":1,"start":0,"docs":[
      {
        "id":"123",
        "name":["Test name"],
        "mappedField_firstName":["vishal"],
        "mappedField_lastName":["rana"],
        "_version_":1630400697277087744}]
  }}

Теперь, когда я пытался найти эту запись по idпо нижеследующему запросу:

Optional<TestCore> optional = testCoreRepo.findById(123);

Не работает, возможно, из-за этого @Dynamic поля присутствуют там.Журнал ошибок выглядит следующим образом:

org.springframework.dao.InvalidDataAccessApiUsageException: Incompartible types found. Expected class java.lang.String for mappedFieldValues with name mappedField_*, but found class java.util.ArrayList; nested exception is java.lang.IllegalArgumentException: Incompartible types found. Expected class java.lang.String for mappedFieldValues with name mappedField_*, but found class java.util.ArrayList

Я пытался решить весь день, но не нашел решения.Пожалуйста, руководство для лучшего решения.Спасибо.

1 Ответ

0 голосов
/ 12 апреля 2019

После перепробовал много вещей.Я получил это работает сейчас, и я думаю, что это может быть полезно для других.Я изменяю тип данных поля @Dynamic, как показано ниже

@Dynamic
@Field("mappedField_*")
private Map<String, List<String>> mappedFieldValues;

Путем изменения этого значения карты со строки на список, который теперь работает.

...