考虑:
@Indexed
@Entity
public class TParent implements java.io.Serializable {
.....
private Set<TChild> TChildSet = new HashSet<TChild>(0);
@ContainedIn
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="TParent")
public Set<TChild> getTChildSet() {
return this.TChildSet;
}
查询将是这样的:
FullTextQuery hibQuery = fullTextSession.createFullTextQuery( luceneQuery );
hibQuery.setSort( ... )
如何实现儿童计数?
换句话说,返回的TParent列表的顺序将由TChildSet计数决定。
我知道 @式 可以在SQL环境中使用。我不确定类似的东西是否可用于Lucene?
任何帮助,指示,评论甚至批评欢迎。
非常感谢 约翰
答案 0 :(得分:1)
在休眠搜索中,您可以为此目的制作自定义Bridge。
有些事情:
@FieldBridge(impl = com.myco.myapp.CollectionCountBridge.class)
@ContainedIn
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="TParent")
public Set<TChild> getTChildSet() {
return this.TChildSet;
}
使用自定义网桥实现:
public class CollectionCountBridge extends PaddedIntegerBridge {
@Override
public String objectToString(Object object) {
if (object == null || (!(object instanceof Collection))) {
return null;
}
Collection<?> coll = (Collection<?>) object;
return super.objectToString(coll.size());
}
}