2005/07/17 諸事情により、しつもんこーなーを凍結します。 |
時期は未定ですが、seasar.org 上に同種の場を作成する予定です。 |
それまでは ML をご利用ください。 |
gami (2005-07-07 19:13:39 (木))
S2Daoを使用し、条件によってDBの接続先を変えることは出来るのでしょうか?
やりたい事
パラメータとしてdriverClassName、URL、user、passwordが
渡って来た場合は、この値を使ってDBに接続する。
パラメータで値が渡って来なかった場合は、
j2ee.diconの値でDBに接続する。
以上、宜しくお願いいたします。
gami (2005-07-07 18:59:14 (木))
S2DAOでselect文を自動生成させ、
プライマリーキーの無いテーブルで実行したところ
PrimaryKeyNotFoundRuntimeExceptionが発生してしまいます。
これは仕様なのでしょうか?
select文なのでプライマリーキーは関係ないような気もするのですが・・・
回避方法等があれば教えてください。
宜しくお願いします。
org.seasar.dao.PrimaryKeyNotFoundRuntimeException: [EDAO0009]pe.bean.entity.SxScanDataにプライマリーキーが見つかりません
at org.seasar.dao.impl.AbstractAutoStaticCommand.checkPrimaryKey(AbstractAutoStaticCommand.java:137) at org.seasar.dao.impl.AbstractAutoStaticCommand.setupUpdateSql(AbstractAutoStaticCommand.java:110) at org.seasar.dao.impl.UpdateAutoStaticCommand.setupSql(UpdateAutoStaticCommand.java:28) at org.seasar.dao.impl.AbstractAutoStaticCommand.<init>(AbstractAutoStaticCommand.java:28) at org.seasar.dao.impl.UpdateAutoStaticCommand.<init>(UpdateAutoStaticCommand.java:18) at org.seasar.dao.impl.DaoMetaDataImpl.setupUpdateMethodByAuto(DaoMetaDataImpl.java:242) at org.seasar.dao.impl.DaoMetaDataImpl.setupMethodByAuto(DaoMetaDataImpl.java:134) at org.seasar.dao.impl.DaoMetaDataImpl.setupMethod(DaoMetaDataImpl.java:118) at org.seasar.dao.impl.DaoMetaDataImpl.setupSqlCommand(DaoMetaDataImpl.java:101) at org.seasar.dao.impl.DaoMetaDataImpl.<init>(DaoMetaDataImpl.java:93) at org.seasar.dao.impl.DaoMetaDataFactoryImpl.getDaoMetaData(DaoMetaDataFactoryImpl.java:42) at org.seasar.dao.interceptors.S2DaoInterceptor.invoke(S2DaoInterceptor.java:36)
rerun (2005-07-05 19:52:11 (火))
S2Daoで条件によってTBLを切替える事は可能でしょうか。
やりたい事を簡単に説明しますと、
- レイアウトは全く同じで、日付レンジのみ異なるテーブルが3つある。
- パフォーマンス上の理由でテーブルは当月データ、前月データ、前々月データに分けられている。
- 画面から条件指定で対象月を選択して、これらのテーブルから検索させたい。
上記のような事を実現させたい場合、Bean、Daoインタフェース、SQLファイルをそれぞれ3つずつ作成するしかないのでしょうか。項目が同一なのでせめてBeanだけでも共用したいのですが何かスマートな方法はありますでしょうか。
SELECT * FROM /*IF deptno <= 10*/DEPT/*END*/ /*IF 10 < deptno && deptno <= 20*/DEP2/*END*/ WHERE deptno = /*deptno*/深く検証までしていませんけど、1.0.23で動作は確認しました。 -- suga 2005-07-06 09:18:19 (水)
rmiya (2005-07-03 02:04:34 (日))
S2JSF 1.0.3でgoogleのような検索画面(同一画面に検索結果を表示)を作成しています。
検索画面にページの初期処理(検索結果を格納している
DTOをクリアしている)を追加した状態で
検索処理を実行すると、
検索処理→初期処理の順番で処理が実行され、
検索結果がクリアされてしまいます。
同一画面に遷移時に、初期処理を実行しない方法はありませんか?
nemo (2005-06-23 17:50:57 (木))
WebアプリケーションでS2コンテナを取得するためにSingletonS2ContainerFactoryを使っています。
S2コンテナを取得する際にinitメソッドの呼びだしが行われているのではないかと思うのですが、
取得後にinitメソッドを呼び出す記述の必要はありますか?
( ´∀`)つ (2005-06-01 21:49:07 (水))
余裕があればマイナーアップデートも。
http://pukiwiki.org/index.php?PukiWiki%2FErrata
PukiWiki1.4.5_1
SAL (2005-05-31 17:30:52 (火))
S2Daoで1つのテーブルを複数のBean(エンティティ)に対応付けたいのですが、実現方法が分かりません。
例えば
Personクラス{String code; String name; Order order;}
Orderクラス{
String orderno;String item;}
ORDERテーブル(
CODENAME ORDERNO ITEM)
以上のような構成のとき、PersonDaoでgetAllPersons()をすると、Personクラスだけでなく、関連先のOrderクラスにもorderno,itemをセットしてほしいと思っているのですが実現方法が分かりません。
実現可能かも含め、ご指導下さい。
public class Person { public static final String TABLE = "ORDER"; String code; String name; Order order; ・・・ }
public class Order { String code; String item; }
public interface PersonDao { public static final Class BEAN = Person; Person getPerson(String code); }
tetsu (2005-05-24 15:50:05 (火))
S2DaoでSQLチューニングとしてヒント文(/*+ ヒント [ヒント] */)を利用しようとしています。
SQL自動生成では対応できないと思いますが、SQLを外部から指定した場合でも無理なのでしょうか。AbstractDaoの実装を行えばいけそうな感触ではありませんが未だ未検証です。
AbstractDaoの実装は工数がかかりますので、外部SQLを利用する場合の逃げ道がありましたらご教示願えないでしょうか。
(2005-05-08 02:28:41 (日))
s2strutsでPOJOなFormBeanを使用してFormFileを扱うにはどうしたらよいのでしょうか?
Flash (2005-04-29 00:16:56 (金))
S2OpenAMFなのですが、
実験のため、StateFull と StateLessの違いを示したいのです。
pojoでjava.io.Serializableを実装したときだけ、StateFullになり、
それ以外はStateLessになるようにするには、どのようにすればよいでしょうか?
デフォルトでは、すべてStateFullになってしまうようなのです。
ご存知の方、教えていただければ幸いです、。
(2005-04-18 18:09:53 (月))
Daoインターフェイスに全件削除メソッドを定義しようと思い以下のように記述しましたが、SQL文がSELECT文と解釈されexecuteQuery()が呼び出されるため上手くいきません。
static String doDeleteAll_QUERY = "delete from EMPLOYEE"; void doDeleteAll();
解決策をお教えいただけないでしょうか。
(2005-04-11 19:26:06 (月))
S2の導入を考えているのですが、S2Struts を使用し、Action内の任意のクラスのメソッドにAOPにてインジェクション可能でしょうか(メソッド実行前・後のログ取得可能でしょうか)。サンプルからActionのexecuteには可能なのはわかったのですが、そのexecute内で呼んでいるクラスに可能かどうか教えていただけますか。(Springでは断念)
(2005-04-08 09:03:27 (金))
環境:
・Windows 2000 sp4
・j2se 1.4.2
・Tomcat 4.1.30
・Struts 1.2.4
・Seasar 2.2.6
・S2Struts 1.1.5
で開発しているのですが、ActionをPOJOにして、forward先を別のPOJO Actionにすると、getterによるrequestへの自動バインディングが出来ない模様です。
struts-config.xmlのvalidate属性をtrueにして、input属性がPOJO Actionだった場合も同様です。
とりあえずその部分だけ、StrutsのActionを継承させれば回避できます。
他の環境では試してないのですが、不具合でしょうか?
(2005-04-01 20:29:06 (金))
SQLファイルで文字列カラムのWhere句をwehre ename = /*$dto.ename*/とした場合、以下のように変数が埋め込まれ
wehre ename = FORDシングルコーテーションで文字列が囲まれていなく、エラーとなってしまいます。
回避方法を教えてください
(2005-03-29 17:36:54 (火))
s2struts1.1.4でSwitchActionをした後
遷移した先のモジュールのActionを実行すると
「処理のためのパスが含まれて居ません」
と出て全てのリクエストが通らなくなります。
なにか特別な設定が必要なのでしょうか?
#s2struts無しの場合正常に動いているアプリケーションです
#s2strutsの設定はドキュメントの通り設定していて、Switch以外は正常に動きます
- s2struts.diconに記述しているRequestProcessorのinstance属性をprototypeにしてください。次のリリース時にs2struts.diconを修正します。(リクエスト毎にインスタンスを生成する訳ではなくモジュール単位に1回だけ生成するので、パフォーマンスへの影響もありません) -- きむきむ 2005-03-30 12:34:55 (水)
- 上記設定でうまくいきました! ありがとうございます。 -- 2005-03-31 23:48:39 (木)
HM (2005-03-04 18:14:15 (金))
S2DaoにてUTF-8でSQLファイルを記述しようと思ったのですが、
エンコーディング指定方法がありません。
ソースからはDaoMetaDataImpl#setUpMethod~ TextUtil.readText InputStreamRaderUtil.create InputStreamRaderUtil.create new InputStramRead( InputStream, "JisAutoDetect")で、JIS系列の場合は大抵大丈夫なのでしょうが、I18n
を思うとこの固定値は変更可能であった方が良いと思い
ます。
もっともっと (2005-03-03 16:07:04 (木))
ハードウェアはSolaris SPARC OS(64bit)で、APサーバにOracle10gで
開発予定です。
上記環境下でS2は動作するのでしょうか?
9 (2005-02-16 11:20:09 (水))
mysqlをwindowsにインストールして
実行して動いていたdaoが
Linuxにインストールした際には動かず
下記のようにテーブルが見つからないというエラーが返却されました。
ESSR0071]SQLで例外が発生しました。理由はjava.sql.SQLException: General error, message from server: "Table 'SN13.tbhz021' doesn't exist"~ at org.seasar.framework.util.DatabaseMetaDataUtil.getPrimaryKeySet (DatabaseMetaDataUtil.java:42) at org.seasar.dao.impl.BeanMetaDataImpl.setupDatabaseMetaData (BeanMetaDataImpl.java:230) at org.seasar.dao.impl.BeanMetaDataImpl.<init>(BeanMetaDataImpl.java:51) at org.seasar.dao.impl.DaoMetaDataImpl.<init>(DaoMetaDataImpl.java:82) at org.seasar.dao.impl.DaoMetaDataFactoryImpl.getDaoMetaData (DaoMetaDataFactoryImpl.java:41) at org.seasar.dao.interceptors.S2DaoInterceptor.invoke (S2DaoInterceptor.java:35) at org.seasar.framework.aop.impl.MethodInvocationImpl.proceed (MethodInvocationImpl.java:60) at org.seasar.framework.aop.proxy.AopProxy.intercept(AopProxy.java:123) at model.dao.sdao.daohz021.Daohz021 $$EnhancerByCGLIB$$ee4442c4.selectCountByCondition(<generated>)
大文字と小文字の区別によるエラーだと思いましたが
DBのテーブル名もDAOで記載してあるDB名どちらとも大文字で書いてあります。
小文字でsqlが発行されているのではないかと思ったのですが、
そのような仕様だったりするのでしょうか?
dbのインストールミスかもしれませんが上記についてご指導お願いします。
いまだ (2005-02-08 15:25:53 (火))
s2-dao-1.0.18を使用しています。
identityを使ったIDの自動生成で、自動生成された値がBeanにセットされません。
DBはHSQLDBです。
・テーブルクリエイト文は以下のとおりです。create table HOGE ( ID INTEGER NOT NULL IDENTITY, NAME varchar(10), PRIMARY KEY (ID) );
・JavaBeansは以下のとおりです。
(検証の為に、idの初期値をわざと-1にしています。)
package examples.dao; import java.io.Serializable; public class Hoge implements Serializable { public static final String TABLE = "hoge"; public static final String id_ID = "identity"; private int id = -1; private String name; public Hoge() { } /** * @return id を戻します。 */ public int getId() { return id; } /** * @param id id を設定。 */ public void setId(int id) { this.id = id; } /** * @return name を戻します。 */ public String getName() { return name; } /** * @param name name を設定。 */ public void setName(String name) { this.name = name; } }
・daoは以下のとおりです。package examples.dao; public interface HogeDao { public Class BEAN = Hoge.class; public void insert(Hoge hoge); }
・diconファイルは以下のとおりです。<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN" "http://www.seasar.org/dtd/components.dtd"> <components> <include path="dao.dicon"/> <component class="examples.dao.HogeDao"> <aspect>dao.interceptor</aspect> </component> </components>・テスト用クラスは以下のとおりです。
package examples.dao; import org.seasar.framework.container.S2Container; import org.seasar.framework.container.factory.S2ContainerFactory; public class HogeDaoClient { private static final String PATH = "examples/dao/HogeDao.dicon"; public static void main(String[] args) { S2Container container = S2ContainerFactory.create(PATH); container.init(); try { HogeDao dao = (HogeDao) container .getComponent(HogeDao.class); Hoge hoge = new Hoge(); hoge.setName("foo"); System.out.println("before insert id:" + hoge.getId()); dao.insert(hoge); System.out.println("after insert id:" + hoge.getId()); } finally { container.destroy(); } } }
・実行結果は以下のようになります。
before insert id:-1 DEBUG 2005-02-08 15:13:08,405 [main] 物理的なコネクションを取得しました DEBUG 2005-02-08 15:13:08,415 [main] 論理的なコネクションを取得しました DEBUG 2005-02-08 15:13:09,336 [main] 論理的なコネクションを閉じました DEBUG 2005-02-08 15:13:09,366 [main] 論理的なコネクションを取得しました DEBUG 2005-02-08 15:13:09,376 [main] INSERT INTO hoge (name) VALUES('foo') DEBUG 2005-02-08 15:13:09,426 [main] CALL IDENTITY() DEBUG 2005-02-08 15:13:09,436 [main] 物理的なコネクションを取得しました DEBUG 2005-02-08 15:13:09,436 [main] 論理的なコネクションを取得しました DEBUG 2005-02-08 15:13:09,476 [main] 論理的なコネクションを閉じました DEBUG 2005-02-08 15:13:09,476 [main] 論理的なコネクションを閉じました after insert id:0 DEBUG 2005-02-08 15:13:09,486 [main] 物理的なコネクションを閉じました DEBUG 2005-02-08 15:13:09,486 [main] 物理的なコネクションを閉じましたテーブルのIDカラムには正しくセットされていますが、
何度実行しても、
after insert id:0
となってしまい、自動生成されたid番号が取得できません。
なお、
SEQUENCEを使ったID自動生成では、うまくidを取得できました。
-1から0に変わっているので、 何かしらセットされているのだと思いますが、うまくいかないようです。
ko-chan (2005-02-08 11:10:26 (火))
ドキュメンテーションの通りにやっているのですが、ID自動生成機能が使えません。
ドキュメンテーションの設定以外にも設定が必要なのでしょうか?
ドキュメントの設定→『public static final String id_ID = "identity";』
9 (2005-01-21 (金) 09:28:41)
char項目をselectのDAOで取得する際、
実際にDBに入っているデータより多くスペース
がついています。(データが2バイト文字の場合)
4桁のcharの項目に1文字(2バイト文字)のデータが入っている場合,
取得されるデータは3つのスペースが付加されます。
2バイト文字がフル桁ではいっている場合もスペースが付加されます。
対応策はないのでしょうか?
SELECT VALUE FROM V$NLS_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET'
http://www.oracle.co.jp/products/system/matrix_db.html
JDBC R10.1.0はOracle8i R8.1.7.4以降に対応します
9 (2005-01-20 (木) 17:14:45)
updateのDAOを作成したのですが、
実際に.sqlのファイルに書いてあるSQL文と
少し違うSQL文が発行されてしまいます。
また、.sqlを修正してもログに書かれるSQL文は変わらなくて
困っています。名前をあわせること以外に何か重要なことでも
有るのでしょうか?
うちま (2004-11-25 (木) 20:34:47)
S2JSFやS2Strutsにおけるバインディングの間違い、S2全般でコンポーネント登録漏れ等 dicon が関係する問題が発生した場合はどの様にデバッグを行えば良いのでしょうか。
またkijimunaを利用するにしてもミスを発生させにくいdiconの書き方の骨のようなものがあれば教えて下さい。
essence (2004-11-25 (木) 13:42:07)
seasar環境でステートパターンを実装するときに、インターフェースと実装の対応が実行時に1対1だと状態によるインスタンスを区別することが難しいと思うんですが、この場合どうしたらいいでしょうか。
(2004-11-18 (木) 23:28:42)
diconが増えてきたのですが、1箇所にまとめたりする方法などあるのでしょうか?
にと (2005-03-15 11:23:05 (火))
DB更新処理で
1.トランザクション開始
2.テーブルA更新 →成功
3.テーブルB更新 →失敗
4.ロールバック →トランザクション開始まで戻る
のような処理を実現したいのですが、
サンプルソースや情報源教えて下さい。