1

10 個のフィールドがあり、結果を取得するために約 5 ~ 6 個のテーブルを含む検索画面があります。カスタム SQL クエリを作成し、値が存在する場合にのみ where 条件を追加しています。

誰かがこれが正しいアプローチなのか、それとも他のより良い方法なのかを提案できますか。

私の状況では、プラグインや追加の API を使用できません。

StringBuffer sqlQuery = new StringBuffer();
sqlQuery.append (" select member.* from member, customer, case where customer.status='A');
if(firstName != null)
sqlQuery.append("customer.firstName= :firstName");

if(caseid != null)
sqlQuery.append("case.caseid =:caseid");

SQLQuery queryObj = createSQLquery(sqlQuery.toString());
queryObj.list();

member 、customer、caseは実際のテーブルです。

アップデート

文字列バッファに where 条件を追加するとき

if(caseid != null)
sqlQuery.append(" and case.caseid =:caseid");

and when queryObj is formed I am doing it as
if(caseid != null)
queryObj.setString("caseid", caseid);

is there better way to add after queryObj (to combine both)?

前もって感謝します。

4

1 に答える 1

2

いいえ、それは必ずしも正しいアプローチではありません。Hibernate を使用する場合、SQL は最適なクエリ言語ではありません。可能であれば、HQL を優先する必要があります。また、Hibernate には、動的クエリを構築するために正確に設計された Criteria APIもあります。

于 2012-06-12T16:14:52.633 に答える