gpt4 book ai didi

hibernate-search - 如何处理@IndexedEmbedded 包含路径中的抽象类型?

转载 作者:行者123 更新时间:2023-12-04 08:57:22 25 4
gpt4 key购买 nike

我正在尝试为部分由抽象类组成的模型创建一个 lucene 索引。假设我想索引类 A,它有一个返回 B 类元素列表的方法,它都有一个抽象类 C 的对象,它有一个抽象方法 getD() 来返回 D 类元素列表。 E 类和 F 类扩展了 C 类并且都实现了方法 getD(),为此我创建了一个 FieldBridge 实现(实现 StringBridge)以将结果转换为用于索引的文本输出。

Hibernate 搜索文档并没有详细说明如何处理继承以及如何将它们与 @IndexedEmbedded 注释一起使用。我尝试了仅提供 c.getD 作为 includePath 的幼稚方法,希望 c 的子类的 getD 实现会自动被使用。这会在运行服务器时导致以下 SearchException:

org.hibernate.search.SearchException: Found invalid @IndexedEmbedded->paths configured on class A, member vragen: b.c.getD

有谁知道如何设置搜索路径或以任何其他方式更改代码,以便在类 A 的索引中获取由 FieldBridge 实现创建的字符串?代码如下:

@Indexed
public class A {
@IndexedEmbedded(includePaths = { "c.getD" })
public List<B> getB() {
// Method implementation returning a list of B
}
}

public class B{
private C c;
}

public abstract class C{
public abstract List<D> getD();
}

public class E extends C{
@Field
@FieldBridge(impl = DListFieldBridge.class)
public List<D> getD() {
// Method implementation returning a list of D
}
}

public class F extends C{
@Field
@FieldBridge(impl = DListFieldBridge.class)
public List<D> getD() {
// Method implementation returning a list of D
}
}

最佳答案

目前这是不可能的。元数据是根据静态类信息构建的,而不是实际的运行时类型。在构建元模型时,也无法判断哪些类扩展了 C

关于hibernate-search - 如何处理@IndexedEmbedded 包含路径中的抽象类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16384412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com