我正在尝试使用Hibernate Search 6和Elastic Search 我正在尝试构建的一个简单示例如下。
我有一个Book
实体,该实体的信息类似title
,authorName
,genre
,price
我有一个Shop
实体,该实体的信息类似shopName
,phone
,email
,location
我有一个“联接表”,可以在角落和商店之间进行多对多映射。 (一本书可以在很多商店里,而一家商店可以有很多书)
我正在尝试按名称和位置进行搜索,最好是在距输入内容最近的位置查找一本书。文档中的标准书作者示例需要一个IndexedEmbedded
批注,在我的情况下这实际上是不可能的,因为我正在使用联接表。
是否有解决此问题的替代方法
答案 0 :(得分:0)
我的实体
paperRef.once('value').then(function(snapshot) {
numberOfPapers = snapshot.numChildren();
});
对我来说,关键是要理解,关系表可以建立索引并用作搜索的基础
@Indexed
public class Book extends PanacheEntity{
public String title;
public String authorName;
@OneToMany(mappedBy = "book", fetch = FetchType.LAZY, cascade = { CascadeType.REMOVE })
public List<BookShopRelation> bookShopRelation = new ArrayList<>();
}
@Indexed
public class Shop extends PanacheEntity{
public String name;
public String city;
@OneToMany(mappedBy = "shop", fetch = FetchType.LAZY, cascade = { CascadeType.REMOVE })
private List<BookShopRelation> bookShopRelation = new ArrayList<>();
}
@Indexed
public class BookShopRelation extends PanacheEntity{
@JoinColumn(name = "shop_id")
@ManyToOne(fetch = FetchType.EAGER, optional = false)
@IndexedEmbedded
private Shop shop;
@JoinColumn(name = "offer_id")
@ManyToOne(fetch = FetchType.EAGER, optional = false)
@IndexedEmbedded
private Book book;
}