WebObjects nsDictionary.valueForKey("5スレ");
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
03/02/04 12:21ID:vwrTw9m5Webアプリ開発環境「WebObjects」について語るスレです。
http://www.apple.co.jp/webobjects/
http://www.apple.com/webobjects/
1スレ目:http://pc.2ch.net/test/read.cgi/php/989562708
2スレ目:http://pc.2ch.net/test/read.cgi/php/1013695600
3スレ目:http://pc.2ch.net/test/read.cgi/php/1024066714
4スレ目:http://pc2.2ch.net/test/read.cgi/php/1033912737
■ 掟 ■
・遠慮は自身の成長を阻害する。過去ログ読んでも判らないことがあればどんどん質問すべし。そして判らないヤツがいたら親切じゃなくてもいいから教えてやるべし。
・WebObjectsを使っている個人・法人の無意味な批判は歓迎されない、しない。マカーマカーと騒がないこと。
・ヨソの開発ツールを使ってもないのにWebObjectsマンセーすることは歓迎されない、しない。
・運用についての質問はハードウェア、OS、パッチ、RDBMSのバージョン、JDBCアダプタのバージョン、Web鯖のバージョン、例外の内容などを細かく明記すべし。
・プ社の話題はウザすぎるので全て専用クソスレでおながいします。
・さやかタン (´Д`;)ハァハァ
0018nobodyさん
03/02/07 00:41ID:???>>12-15 ありがとうございます。
やっぱ Windows はアレだよなぁ・・・ Solaris 使いたいんだけど、
「管理がわからん」とかいう理由で Win ご指定の納入先が結構多くて、
険しい路とは知っていてもあえて Windows での運用ノウハウは必要
なんですよねー。つーか Windows でやるならおとなしく .NET してろと
言いたいが。
Windows Server 2003 は RC2 を注文したので入れたらレポします。
001917
03/02/07 15:29ID:Y4hH+BVZよろぴく〜。
そういえば、Win版をVPCで動かそうと四苦八苦していますが、(Jikesの件、
いまだわからず。とほほ)前スレでも問題になっていた”〜”入力不可の件は
WebObjectBuilderだけではなく、ProjectBuilderでもでちまうことが
分かりました。(入力してもエディター上に表示されない)
ちなみに、WOは5.2です。
ますますWin版を使う気なくしてきた。でも客先がなぁ・・・・。
0020nobodyさん
03/02/08 16:57ID:ykF6rXPGeclipse使え。
0021nobodyさん
03/02/08 17:24ID:???0022nobodyさん
03/02/08 18:37ID:aflm/lKPEclipseだと、SubProjectを含んだビルドに失敗してしまいます。
ビルドだけProjectBuilderにまかせれば、という手も考えましたが、
EclipseとProjectBuilderをいっぺんに立ち上げると一気にマシンの
速度がぁ〜、てなわけで躊躇しています。
コード補完とか、すんごーく使いやすいんですがね。
WOのIDEがEclipseにならないかなぁ。
0023nobodyさん
03/02/09 00:56ID:sqeM9sRqValue for column '_rowid' is not unique.
というエラーが出て困っています。
原因がさっぱりわかりません!
何か心当たりのがあればお教えください。
002423
03/02/09 01:11ID:sqeM9sRqError: com.webobjects.eoaccess.EOGeneralAdaptorException: EvaluateExpression failed: :
Next exception:SQL State:42000 -- error code: 0 --
msg: ERROR - Value for column '_rowid' is not unique.
SQL: INSERT INTO ReserveHistory(Notes, IntStatus, LockFlag, StrReserveTerminalID,
IntReservedItemType, LeaseScanDate, IntPenaltyCode, LeaseDate, IntReservedItem,
LastUpdateTime, Str_id_Name, StatusChangeDate, IntReservedVolume, LastUpdater, _rowid,
IntLeasePeriod, IntLectureLeaseFlag, ReserveScanDate, ReturnScanDate) VALUES
('saved from WebObject', 0, NULL, NULL, 1, NULL, NULL, 65923200, 101, 66412228.012,
'1000001', NULL, 1, NULL, 5932, 1, 0, NULL, NULL)
002523
03/02/09 01:13ID:sqeM9sRq"INSERT INTO ReserveHistory(Notes, IntStatus, LockFlag, StrReserveTerminalID, IntReservedItemType, LeaseScanDate,
IntPenaltyCode, LeaseDate, IntReservedItem, LastUpdateTime, Str_id_Name, StatusChangeDate,
IntReservedVolume, LastUpdater, _rowid, IntLeasePeriod, IntLectureLeaseFlag, ReserveScanDate,
ReturnScanDate) VALUES (?, ?, NULL, NULL, ?, NULL, NULL, ?, ?, ?, ?, NULL, ?, NULL, ?, ?, ?,
NULL, NULL)" withBindings: 1:"saved from WebObject"(notes), 2:0(intstatus), 3:1(intreserveditemtype),
4:2003-02-03 09:00:00(leasedate), 5:101(intreserveditem), 6:2003-02-09 00:50:28(lastupdatetime), 7:"1000001"
(strIdName), 8:1(intreservedvolume), 9:5932(rowid), 10:1(intleaseperiod), 11:0(intlectureleaseflag)>: Next exception:
SQL State:42000 -- error code: 0 -- msg: ERROR - Value for column '_rowid' is not unique. SQL: INSERT INTO ReserveHistory
(Notes, IntStatus, LockFlag, StrReserveTerminalID, IntReservedItemType, LeaseScanDate, IntPenaltyCode, LeaseDate,
IntReservedItem, LastUpdateTime, Str_id_Name, StatusChangeDate, IntReservedVolume, LastUpdater, _rowid, IntLeasePeriod, IntLectureLeaseFlag, ReserveScanDate, ReturnScanDate)
VALUES ('saved from WebObject', 0, NULL, NULL, 1, NULL, NULL, 65923200, 101, 66412228.012, '1000001', NULL, 1, NULL, 5932, 1, 0, NULL, NULL)
002623
03/02/09 01:57ID:sqeM9sRqこれが動かないと家に帰れません。
もう1週間缶詰です。
どなたかお助け下さい。
0027nobodyさん
03/02/09 03:58ID:HGNZuruTOpenBaseもWOも知らんが、_rowidというフィールドに挿入しようとした
5932という値が既に存在するから、ユニーク制約に引っかかってinsert
できないということじゃないか?
002823
03/02/09 05:00ID:sqeM9sRqエラーの意味はわかるんです。
でも_rowidはOpenBaseが勝手に振る連番なはずなんですよ。
なんでWOがあんなSQLを吐くのやら・・・。
0029nobodyさん
03/02/09 09:18ID:C2Bk6nhjうーん、よくわかりません。こちらでも簡単なテーブルで
やってみましたが、再現しません。
EOModelのAttributeに_rowidがありませんか?
あったらこれを削除するか、非表示にして下さい。
(自動生成の場合には出てきませんが)
0030メリーアン
03/02/09 10:06ID:WgfWLREuとりあえず、使用しているRDBMSやWebObjectsのバージョンが判らないと、何とも言えないな…
EO_PK_TABLEというのがスキーマ内に生成されてないかな?それがあれば
主キーの生成はEOFがEO_PK_TABLEを使って生成していることになるから、
当該テーブルの主キー最大値と、EO_PK_TABLEのナカミをみて当該テーブルの
最大値が設定されているから、その値を比較して前者が後者を下回っていないか
どうかを確認する。なっていたらUPDATEするなりする、と。
EO_PK_TABLEが使われていない、つまりOracleのシーケンスオブジェクトや
PostgreSQLの_seq(シーケンステーブル)を使って主キーを生成している場合は、
EOModelor上で当該Entityを選択してGenerateSQLウィンドウを開き、
Drop PrimaryKey Support だけをチェックして実行後、もう一回
Create Primary Key Supportを実行し、シーケンスオブジェクトだけを再度生成する。
たぶん、当該テーブルに対し、WebObjectsからではなくて、SQLで直接テーブルを
Insertしたり、MS-accessなどでいじったりしたんで、シーケンスオブジェクト
(EO_PK_TABLE含む)が管理する値と違う値になっていた、というのが
原因じゃぁないかと。シーケンスオブジェクトの値そのものは、
SQLを叩いてユニークな値(主キー)を生成するだけだから、
テーブルとリンクしているようなイメージを持ってはいけない。
たぶん、シーケンスオブジェクトを再設定することで解決すると思います。
がんがれ。
003129
03/02/09 11:19ID:C2Bk6nhjエラーメッセージからDBはOpenBaseと判ります。(バージョンが
わからないけど)
WOやOSは判らないですね。これがあれば完璧なんですが。
この問題になっている「_rowid」という項目はOpenBaseが自己管理の
ために使用する項目なんで、そもそも外部アプリから操作する項目では
ありません。通常、テーブルからEOModelを自動生成すると「_rowid」を
ふくむOpenBase管理項目(?)はAttributeが生成されません。
よって、何らかの理由でEOModelに「_rowid」が設定されていると思われる
のですが、もし、自分で設定してPK代わりに使用しているのであれば
やめた方がいいです>>23
自動生成されたのであれば、以下の状況を報告して下さい。>>23
1)_rowidにプライマリーキーが設定されているか?
2)OpenBaseのバージョン
0032nobodyさん
03/02/09 12:29ID:???EOModelorからそのままSQLGenerateすればプライマリキーは_rowidになりますね、、
>>23の結果待ちだす。
003331
03/02/09 13:12ID:C2Bk6nhjそれってOpenBase側で別のプライマリーキーを設定して、その状態で
Switchすると「_rowid」がプライマリーキーになっちまうって
ことですか?
003432
03/02/09 14:23ID:???そうだす。_rowidをそのままモデルファイルに取り込んじゃっているということ。
単に作成側の問題です(自分が昔、そうだったんで……単にやりかた悪いだけでつ(;´Д`))
0035とりあえず恒例のもの貼っとくな
03/02/09 19:23ID:???70 アップルコンピュータ
~~~~~■神と人間の境界線■~~~~~~~~~~~~~~~~~~~~~~~~~
61 キャノン販売
60 NTT-ATテクノコミュニケーションズ
~~~~~■↑人に会社名を言って恥ずかしくないライン■~~~
55 サイバー・ラボ
54 ステラクラフト
50 オブジェクトビジョン
49 フレームワークスソフトウェア
48 千明社
47 テクニカルピット
46 メタテクノ
45 オフビートワークス
44 ステッド
43 ヘリオグラフ
42 アイザック
41 アーチシステムズ
40 アプロポー
~~~~~■↑業界内でのみ会社名を言えるライン■~~~~~~~~
39 ビー・ユー・ジー
38 エムアイ
37 イーリープ
36 ローラン
35 オブジェクトファクトリー
34 ペンギンシステム
33 アイ・ツゥ
32 エイビスシステムソリューション
31 シオン
30 プラネットコンピュータ
~~~~~■↑マカーが趣味でやってる零細企業■~~~~~
0036あぼーん
NGNG0037nobodyさん
03/02/09 22:53ID:WgfWLREu奮闘90分、生きた心地しなかったなぁ。仕様書以外のバグでない
システム的なバグの回避は長くなればなるほどストレスにつながる。
とくにコーディング量が必然的に多くなってしまうミドルウェアや言語というのは
この年齢にはちょっと応える。がむしゃらになって働いていた20代前半が懐かしい。
コーディング量が少ないWebObjectsを選択した時はこの手のストレスが多かったことは事実だ。
がしかし、大分慣れてきた今ではJSP&Servlet&EJBの方が苦痛である場合が多い。
特にコーディング量が多くなってしまうのは致し方ないのだが、情報量が乏しい部分だと
途端に右往左往してしまう。ソフトウェア開発産業が誕生して数十年経過するにもかかわらず
このような非生産的な事態を招いている現場にも嫌気がさす時がある。しかしWebObjectsの
WOBuilderやEOModelorを主軸とした開発環境はこうした問題を出来るだけ回避してくれる
(全て解決とは書けないが)ツールだと感じる。思うに、WebObjects開発環境は天才が
作ったもので、JSP&Servlet&EJBは秀才達が集まって作り上げたもののように感じる。
「大は小を兼ねる」。WebObjectsは大であるか小であるか。私は大であると言いたい。
003837
03/02/09 23:23ID:???0039nobodyさん
03/02/10 23:58ID:2czVZ9/U0040nobodyさん
03/02/11 00:06ID:???時とかはちょっと面倒な気がする。rawRowsForSQLしちゃうけど。
>>35
これ、いつもお馴染みだけど、今のキヤノン販売はWebSphere信者だぞ。
0041nobodyさん
03/02/11 00:12ID:LHqjBdlnSQLも流せ、EO経由でもデータメンテができるのがWOのいいところ。
ただ、EO(正確には各種Context)がどのようにデータを抱え込んでいるか
を理解しないと、ASPよりはまるという罠。
0042nobodyさん
03/02/11 00:17ID:LHqjBdlnXServeねぇ・・・。
MacOSXServerは評価しているけど、サポート体制がどうも。
新Mac板で語られていることが真実なら、あのうたい文句は
信じられない。
それともやり方を変えたのかな>アポー。
でも、少なくとも今の日本で30万未満のサーバーを出さないのは
商機を逸している。マーケッテイングを勉強し直したまえ。
0043nobodyさん
03/02/11 00:33ID:???EOAdaptorChannelにある
updateValuesInRowsDescribedByQualifierや
deleteRowDescribedByQualifier
を使えば大量の更新ができるんだが………
Xserve RAID、、あれはあれで、安い方なのかな?
0044nobodyさん
03/02/11 00:39ID:???安いんじゃないの?
あの容量でちゃんと二重化されていてファイバーチャネルだったら。
肝心のパフォーマンスと信頼性だけは未知数だが。
0045nobodyさん
03/02/11 02:54ID:0fPQW4Dbこういう情報どこから手に入れられるの?
0046nobodyさん
03/02/11 02:57ID:0fPQW4Db1085番ポートの問題っていつ頃話題になったのでしょうか?
0048nobodyさん
03/02/11 06:04ID:LHqjBdln前スレの444から。
0049あぼーん
NGNG0052nobodyさん
03/02/11 18:11ID:???その手のクソ話はこのスレでは全く歓迎されない。
その手のクソ話はこのスレでは全く歓迎されない。
その手のクソ話はこのスレでは全く歓迎されない。
その手のクソ話はこのスレでは全く歓迎されない。
その手のクソ話はこのスレでは全く歓迎されない。
その手のクソ話はこのスレでは全く歓迎されない。
その手のクソ話はこのスレでは全く歓迎されない。
その手のクソ話はこのスレでは全く歓迎されない。
その手のクソ話はこのスレでは全く歓迎されない。
その手のクソ話はこのスレでは全く歓迎されない。
その手のクソ話はこのスレでは全く歓迎されない。
0053nobodyさん
03/02/11 23:12ID:???0054nobodyさん
03/02/11 23:42ID:14TDExiiそうですが、何か?
0055nobodyさん
03/02/12 00:15ID:???おまえは、>>1を読んでいないのか?専用クソスレ用意されているぞ。
おまえは、>>1を読んでいないのか?専用クソスレ用意されているぞ。
おまえは、>>1を読んでいないのか?専用クソスレ用意されているぞ。
おまえは、>>1を読んでいないのか?専用クソスレ用意されているぞ。
おまえは、>>1を読んでいないのか?専用クソスレ用意されているぞ。
おまえは、>>1を読んでいないのか?専用クソスレ用意されているぞ。
おまえは、>>1を読んでいないのか?専用クソスレ用意されているぞ。
おまえは、>>1を読んでいないのか?専用クソスレ用意されているぞ。
おまえは、>>1を読んでいないのか?専用クソスレ用意されているぞ。
005655
03/02/12 00:16ID:???WOTabPanel.woを継承するサブクラス作って直接いじるしかないのか?
(ProjectWONDERみたいに)
便利なコンポーネントなんだが
005755
03/02/12 00:21ID:???http://pc2.2ch.net/test/read.cgi/php/1044328908/l50
(このスレの最新50を表示するURL)
を、Safariからアクセスすると、レスポンスアンカー(>>1とか)が正しく機能していないような?
ハイパーリンクになってないんだが、、これは漏れのところだけですかね?
0058nobodyさん
03/02/12 02:35ID:???アポーマンセーはマク板でお願いします。
・・・つーかWebObjectsで3つもスレ立ててんじゃねーよ!
マカーはマク板へ帰れ!
0059nobodyさん
03/02/12 09:47ID:???0060nobodyさん
03/02/12 13:27ID:gNaJ3R3rWOTabPanelのバインドに以下のキーを追加。
width = "広げたい幅"
高さは不明。
0061nobodyさん
03/02/12 23:13ID:t5y+6PRt0062nobodyさん
03/02/12 23:21ID:JmLvk5O1その例えは間違っている。
0063nobodyさん
03/02/12 23:43ID:agonX8npWebObjects???????????????????????????????????
???????????????????????????
0064nobodyさん
03/02/13 05:07ID:uoYhMFPMアポー次第でしょうね。
ひたすら雑誌に広告を出し、日経ナンちゃらに紹介事例を死ぬほど寄稿し
各種セミナーにうざいほどでて、サーバーベンダー(HPとかSUNとか)に
血へどが出るまでバンドルを依頼し、狂ったようにソリューションベンダーに
採用を依頼し、あまつさえ、今出ている未訳のドキュメント類を漏れなく翻訳
すれば、少しは状況が変わってくるでしょう。
しかし、アポー(NEXTも一緒)の販売戦略って「客が驚けば買ってるれるっしょ」
の一言で表現されてしまうように、自分から頭を下げることはまずしませんので
望みは薄いと思います。
0065あぼーん
NGNG0066あぼーん
NGNG006723
03/02/13 18:23ID:P1k+s+Q3みなさんありがとうございます!
今のところは、EOModelerで_rowidをREAD ONLYにすることで回避しています・・・。
データが2つできたりとか謎な現象が起きるんですが
だましだまし動かしてます。
WebObjects5.2
OpenBaseは最新版(確か7.10)です。
OSはMac OS X Server 10.2
EOModelerでのモデルファイルの作成は自動でやらせてます。
自動生成したんですが、なぜか_rowidが含まれるんですよ。
なぜなんでしょう?
プライマリーキーは_rowidに設定しています。
この週末は休みたいよー。
0068nobodyさん
03/02/13 19:20ID:CDpL2M6tうみゅー、よく判らないです。
いちおう、簡単なテーブル作ってモデル取り込みするとAttributeできますね。
>_rowid
管理項目云々はWOに教わった人に聞いていたのと、アポーのサンプルがことごとく
PKから_rowidを外していたので、これはヤバいんでねーかと思った次第です。
(当方はその後MySQLに逃げてしまいましたが。)
グーグル先生にも聞いてたところスコット君の説明がヒットしました。
バージョンは不明ですが、「PKにつかってもいいよん」というお答えでした。
簡単なアプリ作って追加/削除くらいはやってみましたが、いちおういけそうな
感じです。(PKは_rowidのまま)
あと、チェックする項目としてはPKにダイヤモンドマークがついていないか
ぐらいですが。
もしよろしければ、差し支えない範囲でどんな機能があるのか教えて下さい。
私がたいして役に立つとは思えませんが。
006968
03/02/13 19:37ID:CDpL2M6t>データが2つできたりとか謎な現象が起きるんですが
実際のDBにデータが2件かかれたりとかしていますか?
DB上に1件しかないのに画面上に2件出てしまう場合、DisplayGroup
とDBの同期がうまくいっていないことがあるので、DisplayGroupの
fetch()メソッドを呼ぶなどして更新してみて下さい。
0070nobodyさん
03/02/13 23:55ID:xIN/P+G8https://www.event21.ne.jp/apple/wobjpay.html
http://www.cybersolon.com/wo_seminar/wo_training.html
どちらにしようか悩んでます。前回受講した人いたら感想聞かせて。
ところでこの2つ、どうして同じ頃に合わせてやるのでしょ?
0071サンカシャー
03/02/14 00:25ID:yEaQmrnl前者に出た。昨年だけど。
基本的に、WebObjectsを全く知らない人向けのセミナ。Javaをちょっといじったことが
あれば何とかできる。WebObjectsの紹介だとかサイト構築事例だとか。でサンプル使って
ちょっとしたアプリを作る。そのちょっとしたアプリでできあがる奴は、PHPやPerlなら
半日はかかるかもしれぬ奴を1時間ちょっとで組むって感じ。説明はちょっとわかりにくいかも。
WebObjectsがどーゆーふーにしてアプリを作り上げていくかのイロハが判るのは良いと思った。
チュートリアルでいじったことがあるようなら、参加の意味無し。
意外だったのは、周りはマカーばっかだと思ったが、どうってことない、フツーの
リーマンっぽい香具師しかいなかった。隣の奴と名刺交換したが、名を聞けば誰でも
知ってる大会社で、一部門がWebObjects部隊になる(!)ってーんで、そこに投入
されたらしいんだと。
ま、そんなとこ。後者のセミナは全くワカラン。もっと聞きたいことあるかね?
0072名無し
03/02/14 00:50ID:hTREH1A2それは無償セミナーのことじゃないでしょうか。有償トレーニングは4日間みっちり行うかなりレベルの高いものと聞いていますが。少々WebOjectsを使った程度ではついていけないようです。
00734
03/02/14 01:01ID:???親コンポーネントと子コンポーネントの間での値の受け渡しはAPIエディタ
でうにょうにょしたらできるようになりました。
子コンポーネントから親コンポーネントのアクションメソッドに制御を
移すのはperformParentActionでできました。
それで今度は親コンポーネントから子コンポーネントのメソッドを呼びたい
んですが、その方法がわかりません。
親コンポーネントのアクションメソッドから子コンポーネントのクラスの
初期化メソッドを叩きたいのです。
なにか方法はあるでしょうか?
0074nobodyさん
03/02/14 02:18ID:???表示時にappendToResponseが呼ばれるので、親のアクションメソッドでフラグ
立てて、子のappendToResponseでsuper.appendToResponse(...)を呼ぶ前に
初期化処理をしてやったらどうでしょう?
フラグに使うは変数はバインディングで共有できますよね。
0075nobodyさん
03/02/14 02:27ID:???アポーのWWDC2002 session WebObjectsのADC TVを買ったら
デモアプリのサンプルコードはついてくるの?
それともただストリーミングを見ることができるだけ?
何か今見たら見られるだけっぽいですね…DVDコンプリートセットには
ソースコードあるのでしょうか?
自腹で独学&貧乏人にはつらい金額…
0076nobodyさん
03/02/14 09:58ID:???会員<-->>LINK TABLE<<-->関心のある分野
というテーブルがあって、
SFとコンピュータに関心のある会員の一覧を求めるなんて、
EOUtilities.rawRowsForSQLで対応する以外に解決策ってありますか?
007823
03/02/14 10:43ID:uukSVsC0ありがとうございます。
_rowidからPKを外しても_rowidの生成には問題ないんでしょうか?
でも外したら外したで「PKがない」と怒られるし・・・。
実際に2つデータができてます。
作り方そのものがまずいんじゃないかとは思うんですが。
0079nobodyさん
03/02/14 12:12ID:???アポーのサンプル(WOMovieとWOPetStore)をみると、2通りのアプローチ
をしています。
WOMovieの方はDB上のPK_はrowidのままで、EOModeler上のPKは別にとった
ユニークインデックスに割り当てるというもの。
WOPetStoreについては、DBの定義そのものにも_rowidにPKが張られていません。
別の項目に割り当てられています。
だからといって、私が試した限りでは_rowidで駄目というわけでもなさそうです。
>でも外したら外したで「PKがない」と怒られるし・・・。
PKは必ず必要です。ただ、アポーのサンプルみると、_rowidでなければならない
訳ではなさそうです。
あと、PKはDBにinsertする前にWOに通知する必要がありますので、
(WOが決定できる条件なら、Null値を叩き込んでWOに決めさせてもいい)
アダプターがシリアル値などに対応していない場合(OpenBaseってどうだったかな?)
WO以外でPKが更新されるとおかしな現象が多発します。
一度、問題が発生したメソッドをアップしてみればどうですか?
008069
03/02/14 12:40ID:Y6GeQPq3試してませんけど。
String qualifierFormat = "会員.リンクテーブルs.関心のある分野 = %@";
NSArray array = NSArray(new Object[] {"SF","コンピュータ"});
EOQualifier qual =EOQualifier.qualifierWithQualifierFormat(qualifierFormat,array);
で検索条件を指定してfetchする。
でいけませんか?
0081nobodyさん
03/02/14 13:44ID:???> でいけませんか?
では、行けませんね。
PARTS<-->>RELTABLE<<-->COLORS
の例だが、
残念ながら
EOQualifier qualifier = EOQualifier.qualifierWithQualifierFormat("relTables.colors.colorJ = %@",new NSArray("白"));
と
EOQualifier qualifier = EOQualifier.qualifierWithQualifierFormat("relTables.colors.colorJ = %@",new NSArray(new Object[]{"白","黒"}));
は共に
<com.webobjects.jdbcadaptor.OpenBasePlugIn$OpenBaseExpression: "SELECT t0.PartID, t0.PARTNAME FROM PARTS t0, RELTABLE T1, COLORS T2 WHERE T2.COLORJ = ? AND t0.PartID = T1.PARTID AND T1.COLORID = T2.COLORID" withBindings: 1:"白"(colorJ)>
という同じSQLを生成する.
new Object[]{"白","黒"}
のところを
new Object[]{"赤","白","黒"}
にしたら、SQL文の中の白が赤に変わったから、関数のバインドは間違えていないと思う。
0082nobodyさん
03/02/14 16:26ID:???ごめんなさい。この場合はEOOrQualifierにすべきでしたね。
NSArray array1 = NSArray(new Object[] {"SF"});
EOQualifier qual1 = EOQualifier.qualifierWithQualifierFormat(qualifierFormat,array1);
NSArray array2 = NSArray(new Object[] {"コンピュータ"});
EOQualifier qual2 = EOQualifier.qualifierWithQualifierFormat(qualifierFormat,array2);
EOOrQualifier qual = new EOOrQualifier(new NSArray( new Object[]{ qual1, qual2} ));
EOFetchSpecification fetchSpec = new EOFetchSpecification("会員",qual,null);
EOEditingContext ec = session().defaultEditingContext();
NSMutableArray listArray = new NSMutableArray(ec.objectsWithFetchSpecification(fetchSpec);
これでいけるはずです。
008382
03/02/14 16:30ID:Y6GeQPq3適宜補正して下さい。
(といいつつ最後のステップで”)”がぬけてるしぃ)
008482
03/02/14 16:34ID:Y6GeQPq3誤)String qualifierFormat = "会員.リンクテーブルs.関心のある分野 = %@";
正)String qualifierFormat = "リンクテーブルs.関心のある分野 = %@";
0085nobodyさん
03/02/14 16:34ID:???それだと、どちらかに興味ある人は、求められるのですが、
両方に興味ある人は求めれないのですよ。
まあ、それぞれのリストをNSArrayで取得して、
共通部分を求めればいいと言われればそれまでですが。
008682
03/02/14 17:59ID:Y6GeQPq3うーん、その場合だとSQLぶん投げた方が早いかもしれませんね。
でも2つくらいならいけますよ。
1つめのqualifierFormatを"リンクテーブルs.関心のある分野.分野 = %@"
2つめのqualifierFormatを"リンクテーブルs.関心のある分野.リンクテーブルs.会員.リンクテーブルs.関心のある分野.分野 = %@"
で、おのおのEOQualifierを作成し、EOOrQuarifier をEOAndQualifierにかえて結合します。
(やり方そのものは実績あり。(つーか使っているのをみた))
あまり、こんなおばかな手段をとる人はいないと思いますが。
(だって、AND条件が増えればqualifierFormat増やさなければならないし)
0087nobodyさん
03/02/14 18:11ID:???> 2つめのqualifierFormatを"リンクテーブルs.関心のある分野.リンクテーブルs.会員.リンクテーブルs.関心のある分野.分野 = %@"
こんな技があるのか!!
勉強になりました。
> (だって、AND条件が増えればqualifierFormat増やさなければならないし)
3つめ以降は2つめと同じでいい気もするがだめなのかな?
今度、時間にみつけて試してみます.
どうも、ありがとうございました。
008887
03/02/15 13:52ID:???> 3つめ以降は2つめと同じでいい気もするがだめなのかな?
自分で試してみて納得いきました。
えーと、2つめのqualifierFormatは、正確にはこうかな?(同じ会員の別のリンクテーブルにアクセス)
2つめのqualifierFormatを"リンクテーブルs.会員.リンクテーブルs.関心のある分野.分野 = %@"
だから、
1つめのqualifierFormatを"リンクテーブルs.関心のある分野.分野 = %@"
2つめのqualifierFormatを"リンクテーブルs.会員.リンクテーブルs.関心のある分野.分野 = %@"
3つめのqualifierFormatを"リンクテーブルs.会員.リンクテーブルs.会員.リンクテーブルs.関心のある分野.分野 = %@"
・・・・
n番目のqualifierFormatを("リンクテーブルs.会員."×(n-1))+"リンクテーブルs.関心のある分野.分野 = %@"
ある意味「こんなおばかな手段」ともいえますが、
WOの枠組みだけで問い合わせできるし、qualifierFormatも、機械的に生成できるので、「使える」という気がすごくします。
0089nobodyさん
03/02/15 23:16ID:???いまはもう辞めてしまいましたが以前、WebObjectsのプログラマのアルバイトをしていました。
アルバイト先の会社は僕の大学の学生をアルバイトとして使いたいという理由だけで
大学の近くに会社ごと引っ越してきたそうです。
アルバイトは同じ大学の人ばかりでした。
何故、WebObjectsには学歴が重要なのでしょうか?
もし、高学歴者の僕がみなさんの会社に就職したら低学歴のみなさんより
高給取りになれますか?
就職先は引く手あまたですが、大企業の年功序列が崩れてきているので
たとえ零細でも給料が高いところにいくことも考えています。
高学歴が逝かせるWebObjects関連会社なら初任給で年収1200万位はいきますか?
009189
03/02/16 01:02ID:???IP記録がどうかしたのですか?
特定の個人や団体を誹謗してるわけじゃないし、
アンタにとやかく言われるいわれはないですね。
それとも低学歴のヒガミかな(W
0093nobodyさん
03/02/16 02:22ID:???>僕の大学の学生をアルバイトとして使いたいという理由だけで
>大学の近くに会社ごと引っ越してきたそうです。
雑居ビルの一室(以前のスレでワンルームとあった)で経営してる会社の
引越しなんて俺の家の引越しよりお手軽だよ(藁
0094おもしろいのがいるな。
03/02/16 04:19ID:???0095あぼーん
NGNG0096nobodyさん
03/02/16 07:04ID:???勤めて高収入を得ようというのなら、「引く手あまた」の中から適当なものをチョイスすることをお勧め.
> もし、高学歴者の僕がみなさんの会社に就職したら低学歴のみなさんより
> 高給取りになれますか?
給与額云々の前に、うちの会社では君はいりません.
本当に高収入が欲しいのであれば、
技術ノーハウ、営業ノーハウの学習できる会社に就職して、しかる後に独立することですなw
0097WebObjectsの稟議が通らない人
03/02/16 09:13ID:XIpFysKb0098nobodyさん
03/02/16 16:37ID:???学歴神話いまだ健在ってことか?
>何故、WebObjectsには学歴が重要なのでしょうか?
全然重要じゃない。この話がネタでなければ単にプ社がアホなだけ。
>>96のいうように技術ノーハウや営業ノーハウのほうが重要だ。
この世界は東大ってだけでマンセーされるほど甘くはないよ。
0102nobodyさん
03/02/16 20:54ID:???>雑居ビルの一室(以前のスレでワンルームとあった)で経営してる会社の
>引越しなんて俺の家の引越しよりお手軽だよ(藁
関係者に聞いたところだと静岡が本社とウタってはいるが、
そこは単に社長の家だそうだ(藁
実体のない支店や本社を作って会社を大きく見せる手法は
見習うべきかもしれない。
うちもやろっかな?
0103nobodyさん
03/02/16 21:30ID:???実名あげろ。妄想かぃ?
>>関係者に聞いたところだと静岡が本社とウタってはいるが、
>>そこは単に社長の家だそうだ(藁
中小企業経営者なら、そんなやついくらでもいる。何もそこだけじゃない。
ところで、WOFileUploadでストリーミングアップロードをしたいんだが、
WebObjects5.1じゃできないようだ。自前で何とかしないとダメなのか?
0104nobodyさん
03/02/17 02:54ID:U++jXk1/ストリーミング機能付きのWOFileUploadはWO5.2からの新機能です。
5.1でやるからには独自の機能拡張が必要かと。
010582
03/02/17 16:59ID:LzPBxf8f亀レスでごめんなさい。
> n番目のqualifierFormatを("リンクテーブルs.会員."×(n-1))+"リンクテーブルs.関心のある分野.分野 = %@"
つまり、アダプターがテーブルを出現順にt0,t1,t2・・・と連番でふっているのを利用しています。
おばかな手段と思ったのは将来的にもこの法則が適用されるのかなー、見た時ふと思っただけです。
(JDBCの詳しい仕様とかは全く理解していませんが)
ちなみに、そのコードには思いっきりオンコードで上記のようなqualifierFormatがいくつも書かれて
おりました。最初は何やっているのかさっぱり判らなかったです。
いちおう、WO5.2のWOMovieでためしたらうまくいったのでとりあえず今のところは大丈夫なようです。
0106nobodyさん
03/02/17 17:46ID:VGnBF5TZ↑どうだ?
0108nobodyさん
03/02/19 20:40ID:iIVh2s0CError: com.webobjects.eoaccess.EOGeneralAdaptorException: updateValuesInRowDescribedByQualifier -- com.webobjects.jdbcadaptor.JDBCChannel method failed to update row in database
Reason: updateValuesInRowDescribedByQualifier -- com.webobjects.jdbcadaptor.JDBCChannel method failed to update row in database
が出てしまいます。原因と対処法を教えて下さい。
----------
EOFetchSpecification fetchSpec =
new EOFetchSpecification ("Masterstudent", qualifier, sortOrderings);
arrayStudent =
session().defaultEditingContext().objectsWithFetchSpecification(fetchSpec);
if (arrayStudent.count() == 1) {
Session.currentStudent = (Masterstudent)arrayStudent.objectAtIndex(0);
Masterstudent theStudent = (Masterstudent)arrayStudent.objectAtIndex(0);
String string = theStudent.password();
if (string == null) {
//Session.currentStudent.setPassword("TESTPASSWORD");
theStudent.setPassword("TESTPASSWORD");
session().defaultEditingContext().saveChanges();
}else{
0109nobodyさん
03/02/19 21:57ID:5fvPzEiiこれだけだとなんとも・・・。
WOのバージョン、DBなんかも教えれくれないと。
いちおう、似たようなエラーを吐いた事象としては以下のものがあります。
参考にしてくださいまし。
http://www.tech-arts.co.jp/macosx/webobjects-jp/htdocs/1900/1960.html
からのスレッド全部。
ただ、ちと古いんですよね。
0110nobodyさん
03/02/20 09:02ID:???0111nobodyさん
03/02/20 09:56ID:v9eyipuGすいません。WO5.2、Openbase7、Mac OS X Serverです。
>>110
はずしても問題ないんですかね?
0112109
03/02/20 13:41ID:VW1SZJC9あの鍵マークは自分以外に該当のレコードを更新していないか
をチェックするために使用してます。
生成されたSQLを見るとわかるのですが、PK以外にも鍵マークの
ついている項目についてもWHERE文を発行しています。
だから、外しても問題ありません、そのかわりロック機構が甘く
なります。
ただ、日付型については外した方が吉です。(というか外さないと駄目)
あと、Openbaseとのことですので、MLから
日付関係のカラム(あれば)は全て
Date/time → Datetime
変更してみてはいかがでしょうか?
0113nobodyさん
03/02/20 16:54ID:v9eyipuGありがとうございます。
カギマークはずしてみましたがダメでした。
日付はすべてdatetimeになっています。
単純にfetchしてきたものをNSArrayに入れて、変更後に書き戻したい
だけなんですが・・・なんでこんなに苦労するのやら。
0115nobodyさん
03/02/21 09:45ID:3/B6iMn7だめでした。
theStudent.setPassword("TESTPASSWORD");
を呼ばなければsaveChangesのとこでエラー吐かなくなるんですが、
これって変更点がないからスルーされてるわけですよね・・・。
0116112
03/02/21 10:36ID:2Gb1xm+Nこの例外ってtech-artsのMLでもたまーに出てきていますが、いずれも
解決していないようです。
tech-artsのMLに出てきた話を総合すると、
1)OpenBaseのJDBCが悪い(2001/9頃)
→ Data/TimeをDatetime型に変更して対応
2)開発中に急に例外が出るようになった(2003/2/17)
→ EOModelerの鍵マークを外す
あと、同じ例外がOracleでも出ています。
そのときはEOModel上のValue Typeに適切な値を設定して回避しています。
念のため、EOModelをDBから直接生成してみて、Value Typeの値がどうなるか
確認してみてはいかがでしょう。(こちらでOpenBaseから自動生成したら
なんかいろいろつけてきました。)
あとは、ECにたまっているEOと、実際に変更しているEOが同一かどうかを調べて
見るのも手かもしれません。(MLより転載)
System.out.println ("Student = " + theStudent);
System.out.println ("registeredObjects=" +ec.registeredObjects());
System.out.println ("updatedObjects=" +ec.updatedObjects());
最後に、生成されるSQLがどうなっているかも確認して下さい。
あまり役に立たなくてすいません。
#EOModelが壊れている可能性も・・・・
0117nobodyさん
03/02/21 13:48ID:3/B6iMn7ありがとうございます。
MLでも解決してないんですか・・・。
とりあえずEOModelを作り直してみます。
0118nobodyさん
03/02/21 14:56ID:???It also controls which JDBC methods are used to send and retrieve the data
to and from the database. For attributes with a Value Class of
java.lang.String the following value types are defined:
<none>
c
S
C
E
These Value Types affect which method on the java.sql.PreparedStatement are
used to transfer text data between the database and the JDBC adaptor. An
empty Value Type is backward compatible behavior with WebObjects v4.5 and
uses the setString() method if the text is less than the database's
advertised maximum varchar length, and setCharacterStream(), if it is too
large. If the database fails to advertise a maximum length, the default is
256 characters. A Value Type of 'S' uses setString() regardless of the
text's length. A Value Type of 'C' uses setCharacterStream() regardless of
the text's length. A Value Type of 'E' converts the text into raw UTF-8
bytes, and then uses setBinaryStream() to save them in a binary typed column
in the database. The Value Type of 'c' tells the adaptor to generate SQL
using RTRIM to strip off all trailing spaces, such as those found in CHAR
columns.
'S' is appropriate for most text columns. 'C' is good for columns which
usually contain large amounts of data. 'c' should be used when trailing
spaces are not significant in a CHAR column. (It's better to use a VARCHAR
column if possible.) We recommend against using 'E', except in extreme
cases. It is the database's responsibility to handle text encoding issues,
and using 'E' is usually an indication the database is not correctly
configured.
■ このスレッドは過去ログ倉庫に格納されています