トップページ⇒php
868コメント367KB

WebObjects nsDictionary.valueForKey("5スレ");

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/02/04 12:21ID:vwrTw9m5
NeXTからAppleComputerに引き継がれたオブジェクト指向
Webアプリ開発環境「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:???
11っす。

>>12-15 ありがとうございます。
やっぱ Windows はアレだよなぁ・・・ Solaris 使いたいんだけど、
「管理がわからん」とかいう理由で Win ご指定の納入先が結構多くて、
険しい路とは知っていてもあえて Windows での運用ノウハウは必要
なんですよねー。つーか Windows でやるならおとなしく .NET してろと
言いたいが。

Windows Server 2003 は RC2 を注文したので入れたらレポします。
00191703/02/07 15:29ID:Y4hH+BVZ
>>18

よろぴく〜。

そういえば、Win版をVPCで動かそうと四苦八苦していますが、(Jikesの件、
いまだわからず。とほほ)前スレでも問題になっていた”〜”入力不可の件は
WebObjectBuilderだけではなく、ProjectBuilderでもでちまうことが
分かりました。(入力してもエディター上に表示されない)

ちなみに、WOは5.2です。


ますますWin版を使う気なくしてきた。でも客先がなぁ・・・・。
0020nobodyさん03/02/08 16:57ID:ykF6rXPG
>>19
eclipse使え。
0021nobodyさん03/02/08 17:24ID:???
WebObjectsの中の人も大変ですね。
0022nobodyさん03/02/08 18:37ID:aflm/lKP
>>20

Eclipseだと、SubProjectを含んだビルドに失敗してしまいます。

ビルドだけProjectBuilderにまかせれば、という手も考えましたが、
EclipseとProjectBuilderをいっぺんに立ち上げると一気にマシンの
速度がぁ〜、てなわけで躊躇しています。

コード補完とか、すんごーく使いやすいんですがね。

WOのIDEがEclipseにならないかなぁ。
0023nobodyさん03/02/09 00:56ID:sqeM9sRq

Value for column '_rowid' is not unique.
というエラーが出て困っています。
原因がさっぱりわかりません!

何か心当たりのがあればお教えください。
00242303/02/09 01:11ID:sqeM9sRq
長くてすいません。よろしくお願いします。
Error: 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)

00252303/02/09 01:13ID:sqeM9sRq
Reason: EvaluateExpression failed: <com.webobjects.jdbcadaptor.OpenBasePlugIn$OpenBaseExpression:
"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)
00262303/02/09 01:57ID:sqeM9sRq

これが動かないと家に帰れません。
もう1週間缶詰です。
どなたかお助け下さい。
0027nobodyさん03/02/09 03:58ID:HGNZuruT
>>23
OpenBaseもWOも知らんが、_rowidというフィールドに挿入しようとした
5932という値が既に存在するから、ユニーク制約に引っかかってinsert
できないということじゃないか?
00282303/02/09 05:00ID:sqeM9sRq
>>27
エラーの意味はわかるんです。
でも_rowidはOpenBaseが勝手に振る連番なはずなんですよ。
なんでWOがあんなSQLを吐くのやら・・・。
0029nobodyさん03/02/09 09:18ID:C2Bk6nhj
>>28
うーん、よくわかりません。こちらでも簡単なテーブルで
やってみましたが、再現しません。

EOModelのAttributeに_rowidがありませんか?
あったらこれを削除するか、非表示にして下さい。
(自動生成の場合には出てきませんが)
0030メリーアン03/02/09 10:06ID:WgfWLREu
>>23
とりあえず、使用している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を叩いてユニークな値(主キー)を生成するだけだから、
テーブルとリンクしているようなイメージを持ってはいけない。
たぶん、シーケンスオブジェクトを再設定することで解決すると思います。
がんがれ。
00312903/02/09 11:19ID:C2Bk6nhj
>>30

エラーメッセージから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:???
最初はOpenBaseでプロトタイプを作っていたが、PostgreSQLやOracleに展開する時、
EOModelorからそのままSQLGenerateすればプライマリキーは_rowidになりますね、、
>>23の結果待ちだす。
00333103/02/09 13:12ID:C2Bk6nhj
>>32

それってOpenBase側で別のプライマリーキーを設定して、その状態で
Switchすると「_rowid」がプライマリーキーになっちまうって
ことですか?
00343203/02/09 14:23ID:???
>>31
そうだす。_rowidをそのままモデルファイルに取り込んじゃっているということ。
単に作成側の問題です(自分が昔、そうだったんで……単にやりかた悪いだけでつ(;´Д`))
0035とりあえず恒例のもの貼っとくな03/02/09 19:23ID:???
【WebObjects関連会社偏差値ランキング in 2ch PART4】
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あぼーんNGNG
あぼーん
0037nobodyさん03/02/09 22:53ID:WgfWLREu
ふぅ、やっとバグがとれた………。
奮闘90分、生きた心地しなかったなぁ。仕様書以外のバグでない
システム的なバグの回避は長くなればなるほどストレスにつながる。
とくにコーディング量が必然的に多くなってしまうミドルウェアや言語というのは
この年齢にはちょっと応える。がむしゃらになって働いていた20代前半が懐かしい。
コーディング量が少ないWebObjectsを選択した時はこの手のストレスが多かったことは事実だ。
がしかし、大分慣れてきた今ではJSP&Servlet&EJBの方が苦痛である場合が多い。
特にコーディング量が多くなってしまうのは致し方ないのだが、情報量が乏しい部分だと
途端に右往左往してしまう。ソフトウェア開発産業が誕生して数十年経過するにもかかわらず
このような非生産的な事態を招いている現場にも嫌気がさす時がある。しかしWebObjectsの
WOBuilderやEOModelorを主軸とした開発環境はこうした問題を出来るだけ回避してくれる
(全て解決とは書けないが)ツールだと感じる。思うに、WebObjects開発環境は天才が
作ったもので、JSP&Servlet&EJBは秀才達が集まって作り上げたもののように感じる。

「大は小を兼ねる」。WebObjectsは大であるか小であるか。私は大であると言いたい。
00383703/02/09 23:23ID:???
信者的発言スマソ.何日も同じバグで悩むかなと予測していたのだが意外に速く終わったのでついつい書いてしもうた(;´Д`)
0039nobodyさん03/02/10 23:58ID:2czVZ9/U
XServe キターーーーーーーーー!!
0040nobodyさん03/02/11 00:06ID:???
EOって、検索系はやりやすいけど、一度に大量のレコードを更新したい
時とかはちょっと面倒な気がする。rawRowsForSQLしちゃうけど。

>>35
これ、いつもお馴染みだけど、今のキヤノン販売はWebSphere信者だぞ。
0041nobodyさん03/02/11 00:12ID:LHqjBdln
>>40

SQLも流せ、EO経由でもデータメンテができるのがWOのいいところ。
ただ、EO(正確には各種Context)がどのようにデータを抱え込んでいるか
を理解しないと、ASPよりはまるという罠。
0042nobodyさん03/02/11 00:17ID:LHqjBdln
>>39

XServeねぇ・・・。

MacOSXServerは評価しているけど、サポート体制がどうも。
新Mac板で語られていることが真実なら、あのうたい文句は
信じられない。

それともやり方を変えたのかな>アポー。

でも、少なくとも今の日本で30万未満のサーバーを出さないのは
商機を逸している。マーケッテイングを勉強し直したまえ。
0043nobodyさん03/02/11 00:33ID:???
>>40
EOAdaptorChannelにある
updateValuesInRowsDescribedByQualifierや
deleteRowDescribedByQualifier
を使えば大量の更新ができるんだが………

Xserve RAID、、あれはあれで、安い方なのかな?
0044nobodyさん03/02/11 00:39ID:???
>>43
安いんじゃないの?
あの容量でちゃんと二重化されていてファイバーチャネルだったら。
肝心のパフォーマンスと信頼性だけは未知数だが。
0045nobodyさん03/02/11 02:54ID:0fPQW4Db
>>35
こういう情報どこから手に入れられるの?
0046nobodyさん03/02/11 02:57ID:0fPQW4Db
>>14
1085番ポートの問題っていつ頃話題になったのでしょうか?
0047nobodyさん03/02/11 03:41ID:???
>>45
脳内デムパです。
0048nobodyさん03/02/11 06:04ID:LHqjBdln
>>46

前スレの444から。

0049あぼーんNGNG
あぼーん
0050nobodyさん03/02/11 14:48ID:???
>>35
最下位がプラネットなのは納得できるが、最上位はなんでアップルなんだ?
アポーはプラネット以下だよ
0051nobodyさん03/02/11 17:33ID:???
>>50
禿同
0052nobodyさん03/02/11 18:11ID:???
>>50-51
その手のクソ話はこのスレでは全く歓迎されない。
その手のクソ話はこのスレでは全く歓迎されない。
その手のクソ話はこのスレでは全く歓迎されない。
その手のクソ話はこのスレでは全く歓迎されない。
その手のクソ話はこのスレでは全く歓迎されない。
その手のクソ話はこのスレでは全く歓迎されない。
その手のクソ話はこのスレでは全く歓迎されない。
その手のクソ話はこのスレでは全く歓迎されない。
その手のクソ話はこのスレでは全く歓迎されない。
その手のクソ話はこのスレでは全く歓迎されない。
その手のクソ話はこのスレでは全く歓迎されない。
0053nobodyさん03/02/11 23:12ID:???
批判を一切封じてアポー将軍様マンセーする北朝鮮のようなスレはここですか?
0054nobodyさん03/02/11 23:42ID:14TDExii
>>53
そうですが、何か?
0055nobodyさん03/02/12 00:15ID:???
>>53
おまえは、>>1を読んでいないのか?専用クソスレ用意されているぞ。
おまえは、>>1を読んでいないのか?専用クソスレ用意されているぞ。
おまえは、>>1を読んでいないのか?専用クソスレ用意されているぞ。
おまえは、>>1を読んでいないのか?専用クソスレ用意されているぞ。
おまえは、>>1を読んでいないのか?専用クソスレ用意されているぞ。
おまえは、>>1を読んでいないのか?専用クソスレ用意されているぞ。
おまえは、>>1を読んでいないのか?専用クソスレ用意されているぞ。
おまえは、>>1を読んでいないのか?専用クソスレ用意されているぞ。
おまえは、>>1を読んでいないのか?専用クソスレ用意されているぞ。
00565503/02/12 00:16ID:???
ところで、WOTabPanelの各タブの幅を広くする方法はないかね?
WOTabPanel.woを継承するサブクラス作って直接いじるしかないのか?
(ProjectWONDERみたいに)
便利なコンポーネントなんだが
00575503/02/12 00:21ID:???
ふたたび、ところで、
http://pc2.2ch.net/test/read.cgi/php/1044328908/l50
(このスレの最新50を表示するURL)
を、Safariからアクセスすると、レスポンスアンカー(>>1とか)が正しく機能していないような?
ハイパーリンクになってないんだが、、これは漏れのところだけですかね?
0058nobodyさん03/02/12 02:35ID:???
ここはWebプログラムの技術論をする板です。
アポーマンセーはマク板でお願いします。

・・・つーかWebObjectsで3つもスレ立ててんじゃねーよ!
マカーはマク板へ帰れ!
0059nobodyさん03/02/12 09:47ID:???
WebObjectsは十分Webプログラムの技術ですが。マク板では全くなじまない。
0060nobodyさん03/02/12 13:27ID:gNaJ3R3r
>>56

WOTabPanelのバインドに以下のキーを追加。

width = "広げたい幅"

高さは不明。
0061nobodyさん03/02/12 23:13ID:t5y+6PRt
どうにかwebobjectsがejbなみにメジャーになりませんかね?
0062nobodyさん03/02/12 23:21ID:JmLvk5O1
>>61
その例えは間違っている。
0063nobodyさん03/02/12 23:43ID:agonX8np
???????????????????????????????
WebObjects???????????????????????????????????
???????????????????????????
0064nobodyさん03/02/13 05:07ID:uoYhMFPM
>>61

アポー次第でしょうね。

ひたすら雑誌に広告を出し、日経ナンちゃらに紹介事例を死ぬほど寄稿し
各種セミナーにうざいほどでて、サーバーベンダー(HPとかSUNとか)に
血へどが出るまでバンドルを依頼し、狂ったようにソリューションベンダーに
採用を依頼し、あまつさえ、今出ている未訳のドキュメント類を漏れなく翻訳
すれば、少しは状況が変わってくるでしょう。

しかし、アポー(NEXTも一緒)の販売戦略って「客が驚けば買ってるれるっしょ」
の一言で表現されてしまうように、自分から頭を下げることはまずしませんので
望みは薄いと思います。
0065あぼーんNGNG
あぼーん
0066あぼーんNGNG
あぼーん
00672303/02/13 18:23ID:P1k+s+Q3
>>28-34

みなさんありがとうございます!
今のところは、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
>>67
うみゅー、よく判らないです。

いちおう、簡単なテーブル作ってモデル取り込みするとAttributeできますね。
>_rowid

管理項目云々はWOに教わった人に聞いていたのと、アポーのサンプルがことごとく
PKから_rowidを外していたので、これはヤバいんでねーかと思った次第です。
(当方はその後MySQLに逃げてしまいましたが。)

グーグル先生にも聞いてたところスコット君の説明がヒットしました。
バージョンは不明ですが、「PKにつかってもいいよん」というお答えでした。

簡単なアプリ作って追加/削除くらいはやってみましたが、いちおういけそうな
感じです。(PKは_rowidのまま)

あと、チェックする項目としてはPKにダイヤモンドマークがついていないか
ぐらいですが。

もしよろしければ、差し支えない範囲でどんな機能があるのか教えて下さい。



私がたいして役に立つとは思えませんが。
00696803/02/13 19:37ID:CDpL2M6t
>>67

>データが2つできたりとか謎な現象が起きるんですが

実際のDBにデータが2件かかれたりとかしていますか?
DB上に1件しかないのに画面上に2件出てしまう場合、DisplayGroup
とDBの同期がうまくいっていないことがあるので、DisplayGroupの
fetch()メソッドを呼ぶなどして更新してみて下さい。
0070nobodyさん03/02/13 23:55ID:xIN/P+G8
ここらでそろそろセミナーを受けてみようかと

https://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
>71

それは無償セミナーのことじゃないでしょうか。有償トレーニングは4日間みっちり行うかなりレベルの高いものと聞いていますが。少々WebOjectsを使った程度ではついていけないようです。
0073403/02/14 01:01ID:???
またしても、コンポーネント間通信のことでわからないことがあります。
親コンポーネントと子コンポーネントの間での値の受け渡しはAPIエディタ
でうにょうにょしたらできるようになりました。
子コンポーネントから親コンポーネントのアクションメソッドに制御を
移すのはperformParentActionでできました。
それで今度は親コンポーネントから子コンポーネントのメソッドを呼びたい
んですが、その方法がわかりません。
親コンポーネントのアクションメソッドから子コンポーネントのクラスの
初期化メソッドを叩きたいのです。
なにか方法はあるでしょうか?
0074nobodyさん03/02/14 02:18ID:???
>>73
表示時にappendToResponseが呼ばれるので、親のアクションメソッドでフラグ
立てて、子のappendToResponseでsuper.appendToResponse(...)を呼ぶ前に
初期化処理をしてやったらどうでしょう?
フラグに使うは変数はバインディングで共有できますよね。
0075nobodyさん03/02/14 02:27ID:???
ちょっとしつもん、WebObjectsを勉強しようと思ったんだけど
アポーのWWDC2002 session WebObjectsのADC TVを買ったら
デモアプリのサンプルコードはついてくるの?
それともただストリーミングを見ることができるだけ?

何か今見たら見られるだけっぽいですね…DVDコンプリートセットには
ソースコードあるのでしょうか?
自腹で独学&貧乏人にはつらい金額…
0076nobodyさん03/02/14 09:58ID:???
WebObjectsは、入れ子のSelect文に対応する問い合わせができないのが、ちょっと悲しい.
会員<-->>LINK TABLE<<-->関心のある分野
というテーブルがあって、
SFとコンピュータに関心のある会員の一覧を求めるなんて、
EOUtilities.rawRowsForSQLで対応する以外に解決策ってありますか?
0077403/02/14 10:29ID:???
>>74
うわーできました
ぜんぜんこんなやりかた思いつきませんでした
もっと精進することにします。ありがとうございました。
00782303/02/14 10:43ID:uukSVsC0
>>68-69
ありがとうございます。
_rowidからPKを外しても_rowidの生成には問題ないんでしょうか?
でも外したら外したで「PKがない」と怒られるし・・・。

実際に2つデータができてます。
作り方そのものがまずいんじゃないかとは思うんですが。
0079nobodyさん03/02/14 12:12ID:???
>>78

アポーのサンプル(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が更新されるとおかしな現象が多発します。

一度、問題が発生したメソッドをアップしてみればどうですか?
00806903/02/14 12:40ID:Y6GeQPq3
>>76

試してませんけど。

String qualifierFormat = "会員.リンクテーブルs.関心のある分野 = %@";
NSArray array = NSArray(new Object[] {"SF","コンピュータ"});
EOQualifier qual =EOQualifier.qualifierWithQualifierFormat(qualifierFormat,array);

で検索条件を指定してfetchする。

でいけませんか?
0081nobodyさん03/02/14 13:44ID:???
>>80
> でいけませんか?
では、行けませんね。

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:???
>>81

ごめんなさい。この場合は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);

これでいけるはずです。
00838203/02/14 16:30ID:Y6GeQPq3
ちなみに、いまWOできる環境がないので、細かいタイプミスとかは
適宜補正して下さい。

(といいつつ最後のステップで”)”がぬけてるしぃ)
00848203/02/14 16:34ID:Y6GeQPq3
あと、80で書いたフォーマットもちと違っているし。

誤)String qualifierFormat = "会員.リンクテーブルs.関心のある分野 = %@";

正)String qualifierFormat = "リンクテーブルs.関心のある分野 = %@";
0085nobodyさん03/02/14 16:34ID:???
>>82
それだと、どちらかに興味ある人は、求められるのですが、
両方に興味ある人は求めれないのですよ。

まあ、それぞれのリストをNSArrayで取得して、
共通部分を求めればいいと言われればそれまでですが。

00868203/02/14 17:59ID:Y6GeQPq3
>>85

うーん、その場合だとSQLぶん投げた方が早いかもしれませんね。
でも2つくらいならいけますよ。

1つめのqualifierFormatを"リンクテーブルs.関心のある分野.分野 = %@"
2つめのqualifierFormatを"リンクテーブルs.関心のある分野.リンクテーブルs.会員.リンクテーブルs.関心のある分野.分野 = %@"

で、おのおのEOQualifierを作成し、EOOrQuarifier をEOAndQualifierにかえて結合します。
(やり方そのものは実績あり。(つーか使っているのをみた))

あまり、こんなおばかな手段をとる人はいないと思いますが。
(だって、AND条件が増えればqualifierFormat増やさなければならないし)
0087nobodyさん03/02/14 18:11ID:???
>>86
> 2つめのqualifierFormatを"リンクテーブルs.関心のある分野.リンクテーブルs.会員.リンクテーブルs.関心のある分野.分野 = %@"
こんな技があるのか!!
勉強になりました。

> (だって、AND条件が増えればqualifierFormat増やさなければならないし)
3つめ以降は2つめと同じでいい気もするがだめなのかな?
今度、時間にみつけて試してみます.
どうも、ありがとうございました。
00888703/02/15 13:52ID:???
> > (だって、AND条件が増えればqualifierFormat増やさなければならないし)
> 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万位はいきますか?
0090nobodyさん03/02/16 00:38ID:???
>>89
引っ込めバカ。IP記録されてるのを知らぬのか。アタマは最高でもナカミは最低だな。
00918903/02/16 01:02ID:???
>>90
IP記録がどうかしたのですか?
特定の個人や団体を誹謗してるわけじゃないし、
アンタにとやかく言われるいわれはないですね。

それとも低学歴のヒガミかな(W
0092nobodyさん03/02/16 01:45ID:???
>>89
プ社のことだって言いたいんだろ?専用クソスレ逝ってろ。バカ。
0093nobodyさん03/02/16 02:22ID:???
>>89
>僕の大学の学生をアルバイトとして使いたいという理由だけで
>大学の近くに会社ごと引っ越してきたそうです。

雑居ビルの一室(以前のスレでワンルームとあった)で経営してる会社の
引越しなんて俺の家の引越しよりお手軽だよ(藁
0094おもしろいのがいるな。03/02/16 04:19ID:???
おもしろいのがいるな。
0095あぼーんNGNG
あぼーん
0096nobodyさん03/02/16 07:04ID:???
 高学歴な君なら、簡単に理解できると思うが、その話題はこのスレにはふさわしくない.
 勤めて高収入を得ようというのなら、「引く手あまた」の中から適当なものをチョイスすることをお勧め.
> もし、高学歴者の僕がみなさんの会社に就職したら低学歴のみなさんより
> 高給取りになれますか?
給与額云々の前に、うちの会社では君はいりません.

本当に高収入が欲しいのであれば、
技術ノーハウ、営業ノーハウの学習できる会社に就職して、しかる後に独立することですなw
0097WebObjectsの稟議が通らない人03/02/16 09:13ID:XIpFysKb
専用スレッドでまっていますが、来ませんね。
0098nobodyさん03/02/16 16:37ID:???
東大生をバイトに使うために会社引越したってマジなの?
学歴神話いまだ健在ってことか?

>何故、WebObjectsには学歴が重要なのでしょうか?
全然重要じゃない。この話がネタでなければ単にプ社がアホなだけ。
>>96のいうように技術ノーハウや営業ノーハウのほうが重要だ。

この世界は東大ってだけでマンセーされるほど甘くはないよ。
0099nobodyさん03/02/16 16:57ID:???
>>98
クソすれあっからそっちでやれ、バカ。¥
0100nobodyさん03/02/16 17:04ID:???
>>99
クソすれってこのスレのことだろ、バカ。\
0101nobodyさん03/02/16 17:31ID:???
>>100
おまえみたいなやつとかがクソすれにしてるんだよ、バカ。¥
0102nobodyさん03/02/16 20:54ID:???
>>93
>雑居ビルの一室(以前のスレでワンルームとあった)で経営してる会社の
>引越しなんて俺の家の引越しよりお手軽だよ(藁

関係者に聞いたところだと静岡が本社とウタってはいるが、
そこは単に社長の家だそうだ(藁

実体のない支店や本社を作って会社を大きく見せる手法は
見習うべきかもしれない。

うちもやろっかな?
0103nobodyさん03/02/16 21:30ID:???
>>関係者に聞いたところ

実名あげろ。妄想かぃ?
>>関係者に聞いたところだと静岡が本社とウタってはいるが、
>>そこは単に社長の家だそうだ(藁

中小企業経営者なら、そんなやついくらでもいる。何もそこだけじゃない。

ところで、WOFileUploadでストリーミングアップロードをしたいんだが、
WebObjects5.1じゃできないようだ。自前で何とかしないとダメなのか?
0104nobodyさん03/02/17 02:54ID:U++jXk1/
>>103

ストリーミング機能付きのWOFileUploadはWO5.2からの新機能です。
5.1でやるからには独自の機能拡張が必要かと。
01058203/02/17 16:59ID:LzPBxf8f
>>88

亀レスでごめんなさい。

> n番目のqualifierFormatを("リンクテーブルs.会員."×(n-1))+"リンクテーブルs.関心のある分野.分野 = %@"

つまり、アダプターがテーブルを出現順にt0,t1,t2・・・と連番でふっているのを利用しています。
おばかな手段と思ったのは将来的にもこの法則が適用されるのかなー、見た時ふと思っただけです。
(JDBCの詳しい仕様とかは全く理解していませんが)

ちなみに、そのコードには思いっきりオンコードで上記のようなqualifierFormatがいくつも書かれて
おりました。最初は何やっているのかさっぱり判らなかったです。

いちおう、WO5.2のWOMovieでためしたらうまくいったのでとりあえず今のところは大丈夫なようです。
0106nobodyさん03/02/17 17:46ID:VGnBF5TZ
http://yahoo.55street.net/
↑どうだ?
0107nobodyさん03/02/17 22:18ID:???
>>104
ありが��
0108nobodyさん03/02/19 20:40ID:iIVh2s0C
以下のような処理では、Passwordを上書きできません。saveChangesを実行したところで
Error: 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
>>108

これだけだとなんとも・・・。
WOのバージョン、DBなんかも教えれくれないと。

いちおう、似たようなエラーを吐いた事象としては以下のものがあります。
参考にしてくださいまし。

http://www.tech-arts.co.jp/macosx/webobjects-jp/htdocs/1900/1960.html
からのスレッド全部。

ただ、ちと古いんですよね。
0110nobodyさん03/02/20 09:02ID:???
モデルファイルの当該Attributeのロック制限(錠前アイコン)を外せば良いカモ。
0111nobodyさん03/02/20 09:56ID:v9eyipuG
>>109
すいません。WO5.2、Openbase7、Mac OS X Serverです。

>>110
はずしても問題ないんですかね?
011210903/02/20 13:41ID:VW1SZJC9
>>111

あの鍵マークは自分以外に該当のレコードを更新していないか
をチェックするために使用してます。

生成されたSQLを見るとわかるのですが、PK以外にも鍵マークの
ついている項目についてもWHERE文を発行しています。

だから、外しても問題ありません、そのかわりロック機構が甘く
なります。

ただ、日付型については外した方が吉です。(というか外さないと駄目)

あと、Openbaseとのことですので、MLから

日付関係のカラム(あれば)は全て
Date/time → Datetime

変更してみてはいかがでしょうか?
0113nobodyさん03/02/20 16:54ID:v9eyipuG
>>112
ありがとうございます。
カギマークはずしてみましたがダメでした。
日付はすべてdatetimeになっています。

単純にfetchしてきたものをNSArrayに入れて、変更後に書き戻したい
だけなんですが・・・なんでこんなに苦労するのやら。
0114nobodyさん03/02/20 21:26ID:???
>>113
鍵マークを、Pky以外全部外してみたら?
それでもだめ?
0115nobodyさん03/02/21 09:45ID:3/B6iMn7
>>114
だめでした。
theStudent.setPassword("TESTPASSWORD");
を呼ばなければsaveChangesのとこでエラー吐かなくなるんですが、
これって変更点がないからスルーされてるわけですよね・・・。
011611203/02/21 10:36ID:2Gb1xm+N
>>115

この例外って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
>>116
ありがとうございます。
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.
■ このスレッドは過去ログ倉庫に格納されています