1

このような休止状態の分離クエリをハードコーディングするJavaコードのチャンクがあります

session = HibernateUtils.beginTransaction("outpatient");
        Criteria criteria = session.createCriteria(AugmentToken.class);
        session.beginTransaction();
        if (type == Constants.ICD9CPT) {
            criteria.add(Restrictions.disjunction()
                    .add(Restrictions.eq("codeType", "d"))
                    .add(Restrictions.eq("codeType", "p"))
                    .add(Restrictions.eq("codeType", "c")));
        } else if (type == Constants.EM) {
            criteria.add(Restrictions.disjunction()
                    .add(Restrictions.eq("codeType", "eros"))
                    .add(Restrictions.eq("codeType", "ehpi"))
                    .add(Restrictions.eq("codeType", "epe")));
        }

しかし、これはあまり洗練されたコードではありません。私がやりたいのは、コードタイプの配列をメソッドに渡し、論理和の基準を動的に構築することです。私が見ているすべての Web サイトは、上記のような分離クエリの例を提供していますが、コード タイプの数が異なる可能性があるため、基準の制限の構築をハード コードしたくないため、これはうまくいきません。

どうすればいいですか?

ありがとうございました、

エリオット

4

1 に答える 1

2

私はこれを理解したと思います。論理和を変数として作成し、それに順次追加します。
具体的には:

 String [] codeTypes = new String[3];
 codeTyes[0]="d";
 codeTypes[1]="p";
 codetypes[2]="c";
 /* note the above would normally be passed into the method containing the code below */
 Criteria criteria = session.createCriteria(AugmentToken.class);
    session.beginTransaction();
 Disjunction disjunction = Restrictions.disjunction();
 for (int x = 0; x < codeTypes.length; x++ ) {
  disjucntion.add(Restrictions.eq("codeType",codeTypes[x]);
 }
 criteria.add(disjunction);

214 ページの「休止状態の開始」で答えを見つけました。この本は、books.google.com からアクセスできます。

于 2012-09-29T23:45:29.447 に答える