0

検討:

@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 リストの順序は、TCildSet カウントによって決定されます。

@Formula は SQL 環境で使用できることを知っています。Lucene に同様のものが使用できるかどうかはわかりません。

ヘルプ、ポインタ、コメント、批評も歓迎します。

どうもありがとうジョン

4

1 に答える 1

1

In hibernate search, you can make a custom Bridge for this purpose.

Something along the lines of:

@FieldBridge(impl = com.myco.myapp.CollectionCountBridge.class)
@ContainedIn
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="TParent")
public Set<TChild> getTChildSet() {
     return this.TChildSet;
}

With the custom bridge implementation:

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());
    }
}
于 2013-09-16T12:59:32.837 に答える