【发布时间】:2019-07-09 17:06:29
【问题描述】:
我正在使用 Hibernate Search 并希望索引具有使用 @Any 和/或 @ManyToAny 的多态关系的对象。
@Indexed
public class Foo {
@Any(metaDef="fooOwnerType", metaColumn=@Column(name="ownerType"))
@JoinColumn(name="ownerId")
@IndexedEmbedded // this DOES NOT WORK
private OwnerType owner;
@OneToOne
@IndexedEmbedded // this WORKS
private User user;
@OneToOne
@IndexedEmbedded // this WORKS
private Company company;
@Field
private String description;
}
@Indexed
public class User implements OwnerType {
@Field
private String name;
@Field
private String address;
}
public class Company implements OwnerType {
@Field
private String name;
}
public interface OwnerType {
}
我可以毫无问题地使用描述字段中的文本搜索和查找 Foo 对象。我还想做的是在 User.name 或 User.address 匹配时找到 Foo 对象......但是由于多态关系 OwnerType 所有者,Hibernate Search 似乎没有为我索引这些字段。
如果我按预期直接在具体对象(用户或公司)上使用@IndexedEmbedded,它会正常工作。
【问题讨论】:
标签: spring hibernate search spring-data hibernate-search