私は、Hibernate の Criteria API を、複雑な検索基準を適用して、おそらく最も可能性が高いと誰もが言うことに正確に使用したいと考えています。問題は、クエリを実行するテーブルが完全にプリミティブ値で構成されているわけではなく、部分的に他のオブジェクトから構成されているため、それらのオブジェクトの ID に対してクエリを実行する必要があることです。
2年前のこの記事を見つけて、それが不可能であることを示唆しています。オブジェクトのネストを示すために、この種のドット表記が文字列リテラル内でサポートされている場所を知っている Hibernate の他の側面があります。
if (!lookupBean.getCompanyInput().equals("")) {
criteria.add(Restrictions.like("company.company", lookupBean.getCompanyInput() + "%"));
}
編集:
以下の最初の回答からの提案を使用して、上記で試したことを達成するための正しく因数分解されたコードを次に示します。さらに別の関連付けられたオブジェクト/テーブルの属性を注文するために、追加の createCriteria 呼び出しを使用していることに注意してください。
if (!lookupBean.getCompanyValue().equals("")) {
criteria.createCriteria("company").add(
Restrictions.like("company", lookupBean.getCompanyValue() + "%"));
}
List<TrailerDetail> tdList =
criteria.createCriteria("location").addOrder(Order.asc("location")).list();