複数の Grails 2.2.3 アプリケーションで使用するプラグイン用のいくつかのドメイン クラスを作成するために GORM を使用しています。何らかの理由で、Getter を Student ドメイン クラスに追加すると、更新するのに十分な権限がないことを示す BatchUpdateException が発生します。
編集: Oracle 11g データベース用に ojdbc6-11.2.0.1.0 ドライバーを使用していることに注意してください。
これが私の学生クラスです:
class Student {
String sid
String firstName
String lastName
String middleInitial
String email
String ssn
static mapping = {
// Mappings and such
}
}
この Getter を追加して、データベースから受け取る中間の初期値が null である可能性がある場合に「サニタイズ」します。
String getMiddleInitial() {
return this.middleInitial ?: ""
}
その行を追加した後、/$app_name/student/list
URL に移動すると、次のエラー/スタック トレースが表示されます。
Error 500: Internal Server Error
URI
/appname/employee/list
Class
java.sql.BatchUpdateException
Message
ORA-01031: insufficient privileges
Trace
Line | Method
->> 895 | runTask in java.util.concurrent.ThreadPoolExecutor$Worker
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 918 | run in ''
^ 680 | run . . in java.lang.Thread
Caused by SQLGrammarException: Could not execute JDBC batch update
->> 895 | runTask in java.util.concurrent.ThreadPoolExecutor$Worker
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 918 | run in ''
^ 680 | run . . in java.lang.Thread
Caused by BatchUpdateException: ORA-01031: insufficient privileges
->> 10070 | executeBatch in oracle.jdbc.driver.OraclePreparedStatement
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 213 | executeBatch in oracle.jdbc.driver.OracleStatementWrapper
| 297 | executeBatch in org.apache.commons.dbcp.DelegatingStatement
| 895 | runTask in java.util.concurrent.ThreadPoolExecutor$Worker
| 918 | run . . in ''
^ 680 | run in java.lang.Thread
そのゲッターを削除した後、データベース内のすべての学生のリストは問題なく機能します。オブジェクトをデータベースに更新または保存しようとしているわけではないので、これは私には意味がありません。誰が何が起こっているのか、どうすれば修正できるのか説明できますか?