[英]Hibernate Search not indexing embedded collections properly
我目前正在开发一个涉及使用Hibernate Search的项目。 目前该项目使用纯SQL进行搜索,我们希望使用文本搜索(需要知道并正确拼写第一个单词可能会令人讨厌)。
架构是产品可以有多个版本,当前版本包含产品的名称。
Public Class Product extends ProgEntity
{
private List<ProductVersion> versions = new ArrayList<ProductVersion>();
...
}
Public Class ProductVersion extends ProgEntity
{
String productName;
...
}
我需要能够根据其名称搜索产品。 我能够通过productName索引ProductVersions而没有什么问题,但索引产品被证明是一个更大的问题。
经过一些研究后,这就是我所拥有的,但是当我将产品更新到数据库时,没有创建索引。
@Entity
@Indexed
Public Class Product extends ProgEntity
{
@IndexedEmbedded
private List<ProductVersion> versions = new ArrayList<ProductVersion>();
...
}
@Entity
@Embeddable
Public Class ProductVersion extends ProgEntity
{
@Field
String productName;
...
}
DocumentID是ProgEntity的一部分。 我需要确保,如果我更新产品或产品版本,它将被正确索引,现在似乎没有发生。
关于我做错的任何建议?
您在发布的代码中映射的Product和ProductVersion之间没有关系(例如,多对一,多对一)。 这种关系必须是双向的。 使用@IndexedEmbedded注释Product的集合字段,使用@ContainedIn注释ProductVersion一侧的反向字段,您应该全部设置。
在ProductVersion上使用@Entity和@Embeddable似乎是错误的。 还有一些JPA注释缺失。 版本集是否映射为@ManyToOne或@ElementCollection 。 你检查过你的hibernate配置和日志文件了吗? 您使用的是哪个目录提供商?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.