2009-06-18 4 views
0

は、私はちょうど2本のラインを行い、Oracleデータベースのテーブル内のすべてのオブジェクトを返すようにしようとする簡単な方法があります。しかし休止findByCriteriaは奇妙な行動

DetachedCriteria criteria = DetachedCriteria.forClass(Object.class); 
return (Collection)getHibernateTemplate().findByCriteria(criteria); 

を、私は「ORA-01031:権限が不足」を得たエラー。私はshow_sqlのログをチェックすると、私はこれを見つけた:

Hibernate: select this_.NAME as NAME8_0_, from PL_VW this_ where ID=? 
Hibernate: update PL_VW set NAME=? where ID=? 
Hibernate: update PL_VW set NAME=? where ID=? 
Hibernate: update PL_VW set NAME=? where ID=? 
Hibernate: update PL_VW set NAME=? where ID=? 
Hibernate: update PL_VW set NAME=? where ID=? 
... 

はなぜfindByCriteriaは、IDを選択して、複数の更新をするのでしょうか?休止状態にフックされたすべてのテーブルに対してアクセス権を更新する必要がありますか?私はテーブルが更新されることを望んでいない!

コードに問題がありますか?

ありがとうございます。

+0

なぜUPDATE文がそこにあるのか分かりませんが、DetachedCriteria.forClass(Object.class)はデータベース全体のすべてのマップされたオブジェクトを返すと思います。それはあなたが意図したものですか? –

+0

ログエントリがコードと一致しないと思います。他に何か起こっていないと確信していますか? – stevedbrown

答えて

0

はい、すべてのオブジェクトを返すことになっていました。私はいくつかのサブストリング関数を行なったし、変更された文字列を返し、getNameメソッドで

私は、ほとんどの非明白な問題を見つけました。

私はhibernateがすぐにgetNameで返されたものでデータベースを更新しようとしたと思います。 (何?なぜ!)

これはHibernateのドキュメントのどこにも言及されていたのですか、それは常識であるはずでしたか?私はどんなノブですか?

どうもありがとうございました。