1

我是 Hibernate search 6 世界的新手,我想在我的实体中索引枚举列表,但不幸的是我得到了这个错误

HSEARCH700061:无法索引嵌入类型“com.commons.enums.B”

@Entity
@Indexed
public class A {
    @IndexedEmbedded
    @ElementCollection
    @CollectionTable(name = "A_B", joinColumns = @JoinColumn(name = "A_ID"))
    @Enumerated(EnumType.STRING)
    private List<B> b;
}

public enum B {
TEST1,
TEST2,
TEST3
}

有人可以帮帮我吗

4

2 回答 2

1

@IndexedEmbedded在您的情况下没有意义,因为它应该从目标类型嵌入字段,并且您的枚举类型本身并不定义字段(例如,通过@FullTextField其属性)。

您想要的只是在您的实体中定义一个字段A

@Entity
@Indexed
public class A {
    @KeywordField // Replace @IndexedEmbedded with this
    @ElementCollection
    @CollectionTable(name = "A_B", joinColumns = @JoinColumn(name = "A_ID"))
    @Enumerated(EnumType.STRING)
    private List<B> b;
}

public enum B {
TEST1,
TEST2,
TEST3
}
于 2022-01-03T09:50:15.547 回答
0
@Entity
@Indexed
public class A {
    @GenericField
    @ElementCollection
    @CollectionTable(name = "A_B", joinColumns = @JoinColumn(name = "A_ID"))
    @Enumerated(EnumType.STRING)
    private List<B> b;
}

public enum B {
TEST1,
TEST2,
TEST3
}

b.should(f.match().field("b").matching(B.valueOf(keyWord)));

于 2021-12-17T09:59:22.400 回答