2010年2月18日木曜日

seam 2.2.0.GAのseamframework がおかしい?


今まで使っていたコード(agr.ear)をそのままseam2.2.0.GAに移行させてJBoss 5.1.0で動かしているのですが、下の様な所でエラーが出ています。 どうも、seam2.2.0.GAで前のものとは仕様が違っているようで、何か対応策を考えないと、、、、。
左の様なcomponent.xmlの framework:entity-query (select a.activeIngredientToRef from Activeingredients a が問題?)で org.jboss.seam.framework.getResultCount()が実行されると
select count(.) from active_ingredients where .... というSQLが発行されて( countの中が*ではなく . 黒ポチ)、エラーになっています。(多分 a.activeIngredients... を解釈しているのだろうと想像しますが、、、m:m relation なので、都合上今はこんな事をしています)。 2.2より前の時には起こっていなかったエラーなので、2.2になってからの仕様変更(バグ?)だと思うのですが、seamのソースに戻るわけにはゆかないので、何か回避策を考えなければ、、、、、。

3 件のコメント:

  1. JBSEAM-4529-patch-20100123.txt

    ### Eclipse Workspace Patch 1.0
    #P seam_2_2_svn
    Index: src/main/org/jboss/seam/framework/Query.java
    ===================================================================
    --- src/main/org/jboss/seam/framework/Query.java (revision 11986)
    +++ src/main/org/jboss/seam/framework/Query.java (working copy)
    @@ -33,6 +33,8 @@
    private static final Pattern WHERE_PATTERN = Pattern.compile("\\s(where)\\s", Pattern.CASE_INSENSITIVE);
    private static final Pattern ORDER_PATTERN = Pattern.compile("\\s(order)(\\s)+by\\s", Pattern.CASE_INSENSITIVE);
    private static final Pattern GROUP_PATTERN = Pattern.compile("\\s(group)(\\s)+by\\s", Pattern.CASE_INSENSITIVE);
    + private static final Pattern JOIN_FETCH_PATTERN = Pattern.compile("join fetch", Pattern.CASE_INSENSITIVE);
    + private static final String JOIN_OPERATOR="join";

    private static final Pattern ORDER_COLUMN_PATTERN = Pattern.compile("^\\w+(\\.\\w+)*$");

    @@ -320,8 +322,11 @@
    }
    }

    + String fromToWherePart=JOIN_FETCH_PATTERN
    + .matcher(ejbql.substring(fromLoc, whereLoc))
    + .replaceAll(JOIN_OPERATOR);
    return new StringBuilder(ejbql.length() + 15).append("select count(").append(subject).append(") ").
    - append(ejbql.substring(fromLoc, whereLoc).replace("join fetch", "join")).
    + append(fromToWherePart).
    append(ejbql.substring(whereLoc, groupLoc)).toString().trim();
    }
    というのがあります。 この subject が . (ポチ)になっているということなので、ここを見てゆけばよいのだろうと想像はできますが、、、。

    返信削除
  2. eclipseのhql editorで試してみても、同じエラーが出るのでhibernateの所為かと思って、googleしてみたらありました!! でも、3.2.3で18/Apr/07とあるので、ずいぶん古いし、コメントもfixも無いのは何故?
    http://opensource.atlassian.com/projects/hibernate/browse/HHH-2577

    返信削除
  3. seam 2.2.0.GAにあるhibernate*.jarとjboss 5.1.0.GAにあるhibernate*.jarとではバージョンが違っていて、seam 2.2.0.GAのものの方が新しいみたいなので、こっちに入れ替えてみることにしよう。

    返信削除