我可以使用休眠搜索将 UUID 用作 model/pojo class 中 id 字段的数据类型吗

Can i use UUID as datatype for id field in model/pojo class using hibernate search

我正在尝试使用 hibernate search 为我在 spring boot 中的项目实现搜索功能。

我使用了休眠搜索注释,例如 @Indexed@Field

当我使用 id 字段的数据类型为 Long 时,将执行搜索并返回结果列表,但在我的项目中,UUID 用作 id 字段的数据类型,它也是主键。在 UUID 的情况下,结果是空列表。

@Id
@GeneratedValue
private UUID id; 

如何使用 UUID 作为 id 字段的数据类型执行搜索操作?

请使用以下代码

@Id
@Type(type = "uuid-char") // add column type
@GeneratedValue
@Column(name = "id")

如果您使用 uuid 作为数据类型,则需要为 ID 列添加 @Type

希望对你有帮助 谢谢

是的,您可以使用 UUID 作为文档 ID,它应该开箱即用。

如果您没有得到任何结果:

  • 检查您使用的是最新版本的 Hibernate Search (5.11+) 和 Hibernate ORM (5.4+)。
  • 检查您是否在更改 ID 类型后重新索引了数据。
  • 重建索引时,请检查您的日志以查找索引失败并在此处报告。
  • 使用非常简单的查询进行测试,例如 qb.all().createQuery()。如果您通过该查询获得结果,则问题出在您的初始查询,而不是您的标识符。

您可以应用 ,但只有当您希望数据库类型为 VARCHAR 而不是 VARBINARY 时才需要这样做。这与 Hibernate Search 无关。