3
我正在使用hibernate搜索3.4,我遇到了一个小问题。我有一个我正在尝试使用的筛选器(CourseStatusFilterFactory
),但每次启用它时,都不会返回任何结果。我有另一个过滤器没有问题(DeletedFilterFactory
),所以我不知道问题是什么。Hibernate搜索筛选器没有预期的结果使用枚举
这里是对象,我试图寻找:
@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@Indexed
@FullTextFilterDefs({
@FullTextFilterDef(name = "statusFilter", impl = CourseStatusFilterFactory.class, cache = FilterCacheModeType.NONE),
@FullTextFilterDef(name = "deletedCourse", impl = DeletedFilterFactory.class, cache = FilterCacheModeType.NONE)})
public class Course extends LightEntity implements Serializable {
private static final long serialVersionUID = 21L;
@Id
@DocumentId
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Field(name = "title", index = Index.TOKENIZED, store = Store.YES)
private String title;
@Field(name = "coursestatus", index = Index.TOKENIZED, store = Store.YES)
@Enumerated(EnumType.STRING)
private CourseStatus status;}
任我FilterFactory:
public class CourseStatusFilterFactory {
private CourseStatus status;
public void setStatus(CourseStatus status) {
this.status = status;
}
@Key
public FilterKey getKey() {
StandardFilterKey key = new StandardFilterKey();
key.addParameter(status);
return key;
}
@Factory
public Filter getFilter() {
String statusString = new EnumBridge().objectToString(this.status);
Query query = new TermQuery(new Term("coursestatus", statusString));
CachingWrapperFilter cachingWrapperFilter = new CachingWrapperFilter(new QueryWrapperFilter(query));
return cachingWrapperFilter;
}}
,并让我的过滤器:
persistenceQuery.enableFullTextFilter("statusFilter").setParameter("status", CourseStatus.PUBLISHED);
当调试代码,我可以看到,我的查询过滤器确实设置为“coursestatus:PUBLISHED”,但我仍然有0个结果,甚至尽管应该有几十个。
任何想法从哪里开始?