le-*_*ude 2 java lucene hibernate hibernate-search
当我想要使用的索引是Enum类型时,我在使用Hibernate搜索时遇到问题.
以下是我的应用程序的示例:
@Entity
@Indexed
public class MyEntity{
@Id
@Field
public Long id;
@Field(bridge=@FieldBridge(impl=EnumBridge.class))
public Flavour flavour;
}
Run Code Online (Sandbox Code Playgroud)
同
public enum Flavour {
vanilla,
chocolate,
strawberry,
pistacchio;
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用这种类型的查询查找所有实例.
QueryBuilder qb = [~] ;
Query q = qb.keyword().onField("flavour").matching(Flavour.vanilla).createQuery();
Run Code Online (Sandbox Code Playgroud)
当我测试这个时,结果总是空的.我甚至试图用Luke看到索引的内容,我似乎没有找到"味道".在提交更改后,我会对所有内容进行重新索引.除了枚举字段之外,其他任何类型的索引工作和查询都能完美地工作.
我已经试过几乎任意组合norms,analyze,index,store,...的的@Field注释(我用用Hibernate 4.3.1休眠搜索4.5.x).
我究竟做错了什么?我应该看的任何设置?欢迎任何帮助.
实体似乎使用序数存储味道(因此列味道包含0而不是"香草").
我不知道,EnumBridge正在做什么,但我建议将枚举存储为字符串:
@Entity
@Indexed
public class MyEntity{
@Id
@Field
public Long id;
@Field(bridge=@FieldBridge(impl=EnumBridge.class))
@Enumerated(EnumType.STRING)
public Flavour flavour;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2446 次 |
| 最近记录: |