可以在不同的字段上指定@Id和@DocumentId注释吗?

时间:2016-06-29 04:38:51

标签: hibernate-search

我看到Hibernate Search Reference Guide的代码示例中的 @Id @DocumentId 注释始终一起出现在同一个字段中,如下所示。< / p>

public class Book {
    @Id
    @GeneratedValue
    @DocumentId
    private Integer id;

    //...
}

我想知道是否可以在不同的字段中使用 @Id @DocumentId 注释,如下所示?

public class Book {
    @Id
    @GeneratedValue
    private Integer id;

    @DocumentId
    private Integer isbn;

    //...
}

此要求的目的可能是使用 @Id 注释执行 Hibernate 查询,并使用 @DocumentId 注释执行< strong> Hibernate搜索查询。

感谢。

2 个答案:

答案 0 :(得分:3)

所以,答案是肯定的,你可以做到。我们甚至为此进行了单元测试。

接下来的问题是:我会推荐它吗?

不是真的。将@DocumentId保留在@Id上,并在isbn字段上添加@Field。恕我直言,它更直观,它将允许您搜索isbn。你没有充分的理由依赖这样的角落案件。

答案 1 :(得分:1)

从技术上讲, @DocumentId 是可选的,它默认使用与 @Id 相同的字段。我想我们应该从一些例子中删除它,以澄清我们通常不希望你使用它。

因此 @DocumentId 专门存在,以允许您覆盖默认选项。