我正在使用hibernate搜索的弹性搜索。我有一个要求,我必须在kibana中构建tile map.For我需要有纬度和经度值的geo_point数据。我在hibernate中发现我们有@spatial注释要做到这一点,但是当我使用时,我会遇到异常。
java.lang.NullPointerException at org.hibernate.search.engine.metadata.impl.TypeMetadata$Builder.getAnalyzerReference(TypeMetadata.java:631)
我有两个模型实体,我在下面写它。我正在使用hibernate search 5.7.0.Final。
@Entity
@Table(name = "actors", catalog = "twitter")
public class Actors implements java.io.Serializable {
Set<ActorsLocation> actorsLocation;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "actors")
@Cascade(CascadeType.SAVE_UPDATE)
@IndexedEmbedded
public Set<ActorsLocation> getActorsLocation() {
return actorsLocation;
}
public void setActorsLocation(Set<ActorsLocation> actorsLocation) {
this.actorsLocation = actorsLocation;
}
}
@Entity
@Spatial
@Table(name = "actors_location", catalog = "twitter")
public class ActorsLocation implements java.io.Serializable {
private static final long serialVersionUID = 3585685166633868737L;
Long id;
@Id
@Column(name = "id",nullable = false)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Latitude
@Field
Double lat;
@Longitude
@Field
Double lon;
@ContainedIn
Actors actors;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id", nullable = false)
public Actors getActors() {
return actors;
}
public void setActors(Actors actors) {
this.actors = actors;
}
}
有任何建议如何解决?
答案 0 :(得分:0)
正如我的评论所述,NPE是一个错误:https://hibernate.atlassian.net/browse/HSEARCH-2858
我们应该很快修复它,但即使上面的错误得到修复,另一个仍将保留并阻止你存储多值位置(单个“Actor”的多个“ActorLocations”):{{3} }。遗憾的是,这个bug很难解决,我们可能需要等待主要版本。
解决这两个问题的一种方法是反向索引嵌入:将actor嵌入ActorLocations而不是相反。然后,针对ActorLocations执行所有搜索查询,而不是针对Actor执行。我知道,这不是一个理想的解决方案,但它应该有效。