如何将@IndexedEmbedded实体列表的子集映射到其他字段?

时间:2013-07-30 13:45:29

标签: hibernate jpa-2.0

由于标题有点令人困惑,让我用代码来说明:

@Indexed @Entity
public class Person {
    @Id @GeneratedValue
    private Long id;

    @OneToMany(mappedBy = "employee")
    @IndexedEmbedded
    private Set<Job> jobs = new LinkedHashSet<>();
}

@Entity
public class Job {
    @Id @GeneratedValue
    private Long id;

    @Field 
    private Boolean current;
}

现在我有两种不同的搜索方案:一个人当前工作的属性以及该人曾经拥有的所有工作。我知道我可以在事后应用过滤器或者在查询中添加另一个子句,但是如果可能的话我宁愿在索引中复制这些信息,所以我可以有两个不同的搜索查询,比如说

  • (jobs.id: [10 TO 100])适用于id介于10到100之间的所有工作
  • (currentJobs.id: [10 TO 100])适用于此ID范围
  • 的所有当前作业

这可能吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:0)

您可以为 Set 列表实现自定义网桥,该列表会迭代列表并仅为当前作业编制索引。查看文档以获取有关自定义网桥的信息和示例。