版本:
具有以下映射:
@Indexed
@Entity
@Table(name = "scanresult")
public class ScanResult
{
@Id
private ScanResultKey id;
@Field
@Column(name = "name")
private String name;
}
@Embeddable
public class ScanResultKey implements Serializable
{
@ManyToOne
@JoinColumn(name = "eA", referencedColumnName = "id")
private EntityA entA;
//others...
}
我在之前的帖子中已经读到这是Search 4.4
中的一个问题(当有复合ID和外来关系时),但这应该在5.5
中修复。显然这是我的错。但我无法弄清楚我能做错什么
例外:
org.hibernate.search.exception.SearchException: HSEARCH000135: Unable to guess FieldBridge for id in entities.keys.ScanResultKey
注意:我只需要将一个字段(name
)编入索引
请指出我做错了什么?
答案 0 :(得分:2)
好的,既然这个问题几乎没有兴趣,根据观点统计,这里简单地说就是我管理(希望)解决问题的方法(如果你知道的话,请纠正我)
根据this问题的评论者之一,并非所有(甚至最新的)版本都相互兼容。例如:
Hibernate Search 5.5适用于Hibernate ORM 5.0.x和5.1.x(不是 使用5.2.x),以及Apache Lucene 5.3.x,5.4.x和5.5.x(非6.0)
陈述:Sanne
这不是解决此特定问题的方法,但可能会从其他问题中解决
为复合键实现创建FieldBridge
TwoWayFieldBridge
公共类ScanResultBridge实现TwoWayFieldBridge
向Entity Class添加注释,指定Bridge的实现
@FieldBridge(impl = ScanResultBridge.class) 私人ScanResultKey id;