spring数据ElasticSearch:如何忽略hashset字段的Map

qybjjes1  于 2021-06-13  发布在  ElasticSearch
关注(0)|答案(1)|浏览(345)

赏金4天后到期。回答此问题可获得+50声望奖励。barsawi13正在寻找一个标准答案**:

在SpringDataElasticSearch中Map嵌套字段是原始的,而且很明显,即使在一个基本示例中也经常出现这种异常
我有两个文件用户和活动,他们都是索引,我想搜索用户的名字和姓氏
用户

@org.springframework.data.elasticsearch.annotations.Document(indexName = "user")
@Entity
public class User implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Field(type = FieldType.Text, fielddata = true)
    private String firstName;

    @Field(type = FieldType.Text, fielddata = true)
    private String lastName;

    @OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
    @Field(type = FieldType.Nested)
    private Set<Activity> activities = new HashSet<>();
}

活动

@org.springframework.data.elasticsearch.annotations.Document(indexName = "activity")
@Entity
public class Activity implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Field(type = FieldType.Text, fielddata = true)
    private String name;

    @ManyToOne
    @JsonIgnore
    @EqualsAndHashCode.Exclude
    private User user;
}

但我总是得到如下例外
原因:com.fasterxml.jackson.databind.jsonmappingexception:(was java.lang.nullpointerexception)未能通过引用用户[“activity”]->java.util.hashset[0]Map源
我使用的是SpringDataElastic3.2.7和es6.8.6
我真的被困了两个星期,我需要做我的搜索没有注解“活动”字段与@jsonignore我有许多文件在我的项目中,提供hashset字段,我是新的弹性,所以任何优化的方法如何忽略或Map这类字段是非常有帮助的。

7eumitmz

7eumitmz1#

尝试添加

@JsonIgnoreProperties(ignoreUnknown = true)

在你的头顶上。这样地:

@org.springframework.data.elasticsearch.annotations.Document(indexName = "activity")
@Entity
@JsonIgnoreProperties(ignoreUnknown = true)
public class Activity implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Field(type = FieldType.Text, fielddata = true)
    private String name;

    @ManyToOne
    @JsonIgnore
    @EqualsAndHashCode.Exclude
    private User user;
}

相关问题