У меня был документ 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
Я пытался решить весь день, но не нашел решения.Пожалуйста, руководство для лучшего решения.Спасибо.