2015-02-23 63 views
1

我有以下Hibernate Search的实体类:如何根据嵌入式ID中的某个属性在hibernate搜索中获取搜索匹配?

@Entity 
@Indexed 
public class TableA { 
    @EmbeddedId 
    @DocumentId 
    @FieldBridge(impl = TableA_Bridge.class) 
    @Field(index = Index.YES, analyze = Analyze.YES, store = Store.NO) 
    private TableA_Pk id; 
    /* 
    Other fields; 
    setters and getters; 
    */ 
} 

以下是TableA_Pk类:

@Embeddable 
public class TableA_Pk implements Serializable { 
    private static final long serialVersionUID = 1L; 
    @Field(index = Index.YES, analyze = Analyze.YES, store = Store.NO) 
    private String a; 
    private String b; 
    private String c; 
    /* 
    setters and getters; 
    */ 
} 

所以,现在我的问题是,我该如何查找基于域,a,b或点击c在TableA_Pk类中?

回答

1

你实现TableA_Bridge应该从每个TableA_Pk实例Lucene的文档添加字段,用适当的索引选项,你可以选择你想要的字段名。

这将使他们可搜索。

使用@FieldBridge注释是“先进”的方式来做到这一点,你可能想简单地使用@IndexedEmbedded,与@Field注解,它会自动添加所有领域。 在这种情况下,您不会使用@FieldBridge注释。

+1

我在'id'上面加了@IndexedEmbedded实例,它的功能就像一个魅力。非常感谢。 – rose1 2015-02-27 23:41:20