说我有这样的模特A:
@Embeddable
class A {
@Field
private String name;
@Field
private Boolean editable;
@IndexedEmbedded
private B bObject;
}
其中,B是,比方说
@Embeddable
class B {
@Field
private int intValue;
@Field
private boolean boolValue;
}
现在,我有一个C级,
@Entity
class C {
//How to annotate this to enable search like setOfA.name="searchQuery", or setOfA.bObject.intValue=5
@ElementCollection
private Set<A> setOfA;
}
我看到我可以创建自定义Bridge,但无法弄清楚Bridge应该做什么,特别是启用setOfA.bObject.intValue = 5等搜索。
感谢任何帮助。感谢。
答案 0 :(得分:2)
这是一个有效的例子:
@ElementCollection
@Field(name="listStringField")
@FieldBridge(impl=BuiltinIterableBridge.class)//ListStringBridge.class)
public List<String> getListString(){
return listString;
}
答案 1 :(得分:0)
在集合对象上使用@ContainedIn
,如:
@ContainedIn
private Set<A> setOfA;
并使用@IndexedEmbedded
来代替其他方面:
@Embeddable
class A {
@Field
private String name;
@Field
private Boolean editable;
@IndexedEmbedded
private B bObject;
@OneToOne( cascade = { CascadeType.PERSIST, CascadeType.REMOVE } )
@IndexedEmbedded
private C cObject;
}
答案 2 :(得分:0)
您需要添加@OneToMany
或@ManyToMany
,以便按照JPA条款正确映射关联。然后添加@IndexedEmbedded
以通过Hibernate Search启用全文搜索。