注文した日付で顧客のアイテムのリストをソートしようとしています。 DateはItemを通じてのみ使用可能です。 orderPositions.order.orderDate。しかし@IndexedEmbeddedは機能しません。 ExeptionまたはErrorはありませんが、結果はHSロジックのみでソートされます。@OneToMany関連で検索の並べ替えを休止できませんか?
@Entity
@Indexed
public class Item{
@Id
private long id;
@Field(index = Index.YES, store = Store.YES, analyse = Analyse.YES, analyser = @Analyzer(definition = Constant.ANALYSER))
private String description;
@OneToMany(mappedBy = "item")
@IndexedEmbedded
private List<OrderPosition> orderPositions;
@ManyToOne
@IndexedEmbedded
private Company company;
//getter&setter
}
@Entity
public class OrderPosition{
@Id
private long id;
@ManyToOne
private Item item;
@ManyToOne
@IndexedEmbedded
private Order order;
//getter&setter
}
@Entity
public class Order{
@Id
private long id;
@ManyToOne
private Customer customer;
@Field(index = Index.NO, store = Store.NO, analyze = Analyze.NO)
@SortableField
private String orderDate;
//getter&setter
}
@Entity
public class Company{
@Id
private long id;
@Field(index = Index.NO, store = Store.NO, analyze = Analyze.NO)
@SortableField
private String name;
//getter&setter
}
アイテムごとに並べ替えを行う場合。 company.nameうまく動作します。
queryService.buildFullTextQuery("searchText", Item.class, "description", "company.name").getResultList();
アイテムを並べ替える場合。 orderPosition.order.orderDate、私がFullTextQueryをこのように構築し、デフォルト(HS-ロジック)
queryService.buildFullTextQuery("searchText", Item.class, "description", "orderPositions.order.orderDate").getResultList();
によって並べ替えられています:
public FullTextQuery buildFullTextQuery(@NonNull String searchText, @NonNull Class<?> clazz, @NonNull String... fields) throws Exception {
FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(getEntityManager());
QueryBuilder qb = fullTextEntityManager.getSearchFactory().buildQueryBuilder().forEntity(clazz).get();
Query query = qb.keyword().onField(fields[0]).matching(searchText).createQuery();
SortField sortField = new SortField(fields[1], SortField.Type.STRING, false);
Sort sort = new Sort(sortField);
return fullTextEntityManager.createFullTextQuery(query, clazz).setSort(sort);
}
私はHSが@OneToManyの関連付けを見つけることができませんと思います。この問題を解決する方法はありますか?
は、私は正確にあなたのクエリの結果なしで何が起こっているかを伝えることはできません