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 件のコメント:

YamadaTs さんのコメント...

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 が . (ポチ)になっているということなので、ここを見てゆけばよいのだろうと想像はできますが、、、。

YamadaTs さんのコメント...

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

YamadaTs さんのコメント...

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

アンテナ切り替えの自動化 (続き)

 調子よく動いていると思っていたら、インジケータのLEDが次々と点かなくなってゆく、、、。 不精して、出力端子(14Vのon/off)にLEDを直列抵抗と入れていたのですが、これではダメっぽい。 LEDが死んでいる。 では、という事でFETのスイッチを入れて、ゲート電圧で検出して...