用lucene对两个表进行Hibernate搜索

时间:2013-08-13 11:04:44

标签: spring-mvc lucene hibernate-search

我有两个表CatalogueBase和CatalogueCopydetails现在我正在使用Hibernate搜索CatalogueBase表,但我想搜索甚至在CatalogueCopydetails表中。这两个表与@ManyToOne相关(即使用CatalogueBase id作为外键的CatalogueCopydetails),听取CatalogueBase的一个条目,它们将是'n'个编号的目录.Copydetails

CatalogueBase POJO Class

@Indexed
@JsonAutoDetect
@Entity
@Table(name="catalogueBase")
public class CatalogueBase extends BaseObject implements Serializable {

    private Long id;
    ......

    @Id
    @GeneratedValue
    @Column(name="id")
    @Field(index = Index.YES, analyze = Analyze.YES, store = Store.YES)
    public Long getId() {
        return id;
    }

    public void setId(Long   id) {
        this.id = id;
    }
         ....

CatalogueCopydetails POJO Class

@JsonAutoDetect
@Entity
@Table(name="cataloguecopydetails")
public class CatalogueCopyDetails extends BaseObject implements Serializable {  

    private CatalogueBase catalogueBase;
    ......
    @ManyToOne
    @JoinColumn(name="cataloguebaseid" , insertable=true, updatable=true,nullable=true)
    public CatalogueBase getCatalogueBase() {
        return catalogueBase;
    }
    public void setCatalogueBase(CatalogueBase catalogueBase) {
        this.catalogueBase = catalogueBase;
    }

    ......

至少如何在这种情况下使用@IndexedEmbedded(我认为我不能使用@IndexedEmbedded,因为CatalogueBase与OneToOne或OneToMany之类的CatalogueCopyDetails无关,只有CatalogueCopyDetails引用CatalogueBase)

我怎么能这样做??,任何帮助将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:0)

最简单的方法当然是使关系双向化。你有什么理由不想这样做吗?您可以做的另一件事是将@Indexed添加到CatalogueCopyDetails并在CatalogueBase上使用@InededEmbedded。然后,您可以使用CatalogueCopyDetails索引编写查询。这是否有效取决于您的用例以及查询结果实际需要的内容。