使用Kotlin和spring-data-solr时Solr字段被映射到Array

时间:2018-07-03 10:42:29

标签: spring-boot solr kotlin spring-data-solr

我将spring-boot-starter-data-solrkotlin一起使用。

我定义了以下Document类

@SolrDocument
data class SolrImage(
    @Id @Field private val id : String,
    @Field private val clip : Long,
    @Field private val filename : String,
    @Field private val uri : String
)

和此存储库

@Repository
interface ImageRepository : SolrCrudRepository<SolrImage, String> {

    fun findByClip(clip : Long) : List<SolrImage>
}

当我执行以下val images = imageRepository.findByClip(clip)

然后我收到此错误:

Failed to instantiate SolrImage using constructor fun <init> 
(kotlin.String, kotlin.Long, kotlin.String, kotlin.String): SolrImage 
with arguments 0-image1281.png,[0],[0-image1281.png],null`

由于clipfilename字段作为数组返回。

但是,当我用等效的Java代码替换文档类时:

@SolrDocument
public class SolrImage {

    @Id
    @Field
    private String id;

    @Field
    private Long clip;

    @Field
    private String filename;

    @Field
    private String uri;

    public String getId() {
            return id;
    }

    public void setId(String id) {
            this.id = id;
    }

    public Long getClip() {
            return clip;
    }

    public void setClip(Long clip) {
            this.clip = clip;
    }

    public String getFilename() {
            return filename;
    }

    public void setFilename(String filename) {
            this.filename = filename;
    }

    public String getUri() {
            return uri;
    }

    public void setUri(String uri) {
            this.uri = uri;
    }
}

然后我可以按预期检索对象。

我不确定为什么这样做会有所不同。有什么建议么?我真的很喜欢和Kotlin一起工作,但是我并没有真正了解它的所有细节,所以我可能会遗漏一些显而易见的东西。

0 个答案:

没有答案