![](/img/trans.png)
[英]Hibernate Search Association with IndexEmbedded property with composite ID
[英]hibernate search - get entity id in composite
我想创建一个组合并将实体 id(数据库中的那个)添加为属性。 我尝试使用 f.id() 但我不能 map 它很长而且它似乎是 elasticsearch 中的文档 ID 而不是数据库索引。 这是我的代码。
List<GlobalSearchResult> hits = searchSession.search(Searchable.class)
.select(f -> f.composite(
GlobalSearchResult::new,
f.id(),
f.field("searchType", String.class),
f.field("searchName", String.class),
f.field("searchDescription", String.class),
f.score()
))
.where(f -> f.simpleQueryString().fields(INDEXED_FIELDS).matching(q))
.fetchHits( 20 );
是否有一种聪明、优雅的方式将 id 输入 GlobalSearchResult 或者我必须获取实体和 map 吗? 这将是很多样板代码,因为我有许多实现 Searchable 的类。
谢谢您的帮助!
您的代码片段返回文档 ID,但默认情况下与实体 ID 相同,因此这对您来说应该可以正常工作,除非您有一个奇异的映射。
假设所有目标类型的 ID 确实是 Long,您只需将Long.class
传递给id()
即可将 ID 作为 long 检索:
List<GlobalSearchResult> hits = searchSession.search(Searchable.class)
.select(f -> f.composite(
GlobalSearchResult::new,
f.id(Long.class),
f.field("searchType", String.class),
f.field("searchName", String.class),
f.field("searchDescription", String.class),
f.score()
))
.where(f -> f.simpleQueryString().fields(INDEXED_FIELDS).matching(q))
.fetchHits( 20 );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.