[Seasar-user:1481] PostgreSql での Update Error
Masanobu Shimura
mikeshimura
2005年 2月 13日 (日) 20:42:56 JST
ひが様
S2JSFのSampleをPostgreSql(Ver 8.0)で動かそうとしています。
最初 Errorが出たのですが、Table NameとColumn Nameを小文字にしましたら、
動く様になりました。
ただ編集画面で上司らんが空白のまま更新するとERRORになります。
ERRORは下記の通りです。
org.seasar.framework.exception.SQLRuntimeException: [ESSR0071]SQLで例外が
発生しました。理由はjava.sql.SQLException: ERROR: column "mgr" is of type
integer but expression is of type character varying
その前のLOGをみると下記のようになっています。
DEBUG 2005-02-13 20:26:51,265 [http-8080-Processor24] END
examples.jsf.action.impl.EmployeeConfirmInitActionImpl#initialize() : null
DEBUG 2005-02-13 20:26:54,969 [http-8080-Processor24] BEGIN
examples.jsf.action.impl.EmployeeConfirmActionImpl#store()
DEBUG 2005-02-13 20:26:54,969 [http-8080-Processor24] BEGIN
examples.jsf.logic.impl.EmployeeLogicImpl#update([7788, Mike, TEST, null,
Sat Jan 01 00:00:00 JST 2005, 30000, null, null, 0, ])
DEBUG 2005-02-13 20:26:54,969 [http-8080-Processor24] トランザクションを
開始しました
DEBUG 2005-02-13 20:26:54,969 [http-8080-Processor24] BEGIN
examples.jsf.dao.EmployeeDtoDao#update([7788, Mike, TEST, null, Sat Jan 01
00:00:00 JST 2005, 30000, null, null, 0, ])
DEBUG 2005-02-13 20:28:05,265 [http-8080-Processor24] 論理的なコネクショ
ンを取得しました
DEBUG 2005-02-13 20:28:26,219 [http-8080-Processor24] UPDATE EMP SET ename
= 'Mike', job = 'TEST', mgr = null, hiredate = '2005-01-01', sal = 30000,
comm = null, deptno = null, versionNo = 1 WHERE empno = 7788 AND versionNo
= 0
この「UPDATE EMP SET ename = 'Mike', job = 'TEST', mgr = null, hiredate =
'2005-01-01', sal = 30000, comm = null, deptno = null, versionNo = 1 WHERE
empno = 7788 AND versionNo = 0
」文を直接 Postgres SQLで入力
すると問題なく更新されます。
添付のEclipseのTraceで、mgrのnullのobject が 他の VARCHARのnullの
objectと同じものになっているのが、気になりますが原因は解かるでしょうか?
なおERROR発生時のTraceは以下の通りです。
Caused by: java.sql.SQLException: ERROR: column "mgr" is of type integer
but expression is of type character varying
at
org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1471)
at
org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1256)
at
org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:175)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:388)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:329)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:281)
at
org.seasar.framework.util.PreparedStatementUtil.executeUpdate(PreparedStatementUtil.java:28)
... 83 more
DEBUG 2005-02-13 20:32:27,656 [http-8080-Processor24] END
examples.jsf.action.impl.EmployeeConfirmActionImpl#store()
Throwable:org.seasar.framework.exception.SQLRuntimeException: [ESSR0071]SQL
で例外が発生しました。理由はjava.sql.SQLException: ERROR: column "mgr" is
of type integer but expression is of type character varying
2005-02-13 20:32:27,656 [http-8080-Processor24] ERROR
net.sourceforge.myfaces.el.MethodBindingImpl - Exception while invoking
expression #{employeeConfirmAction.store}
org.seasar.framework.exception.SQLRuntimeException: [ESSR0071]SQLで例外が
発生しました。理由はjava.sql.SQLException: ERROR: column "mgr" is of type
integer but expression is of type character varying
at
org.seasar.framework.util.PreparedStatementUtil.executeUpdate(PreparedStatementUtil.java:30)
at
org.seasar.dao.impl.AbstractAutoHandler.execute(AbstractAutoHandler.java:108)
at
org.seasar.dao.impl.AbstractAutoHandler.execute(AbstractAutoHandler.java:92)
at
org.seasar.dao.impl.AbstractAutoStaticCommand.execute(AbstractAutoStaticCommand.java:32)
at
org.seasar.dao.interceptors.S2DaoInterceptor.invoke(S2DaoInterceptor.java:37)
at
org.seasar.framework.aop.impl.MethodInvocationImpl.proceed(MethodInvocationImpl.java:93)
特に急ぎませんので、お手すきの時にできれば返事をおねがいします。
志村
-------------- next part --------------
テキスト形式以外の添付ファイルを除去しました...
ファイル名: daotrbl.jpg
型: image/jpeg
サイズ: 41915 バイト
説明: daotrbl.jpg
URL: http://lists.sourceforge.jp/mailman/archives/seasar-user/attachments/20050213/5a88ac1c/daotrbl-0001.jpg
Seasar-user メーリングリストの案内