我看到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搜索查询。
感谢。
答案 0 :(得分:3)
所以,答案是肯定的,你可以做到。我们甚至为此进行了单元测试。
接下来的问题是:我会推荐它吗?
不是真的。将@DocumentId保留在@Id上,并在isbn字段上添加@Field。恕我直言,它更直观,它将允许您搜索isbn。你没有充分的理由依赖这样的角落案件。
答案 1 :(得分:1)
从技术上讲, @DocumentId 是可选的,它默认使用与 @Id 相同的字段。我想我们应该从一些例子中删除它,以澄清我们通常不希望你使用它。
因此 @DocumentId 专门存在,以允许您覆盖默认选项。