我可以使用休眠搜索将 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 无关。
我正在尝试使用 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 无关。