error แปลกๆ ที่ไม่รู้เพราะอะไรครับ [5438136] errors.GrailsExceptionResolver

31 views
Skip to first unread message

kks...@yahoo.com

unread,
Mar 3, 2008, 6:29:16 AM3/3/08
to กลุ่มผู้ใช้เกรลส์ในไทย
[5438136] errors.GrailsExceptionResolver
org.springframework.orm.hibernate3.HibernateSystemException: Provided
id of the wrong type. Expected: class java.lang.Long, got class
java.lang.String; nested exception is
org.hibernate.TypeMismatchException: Provided id of the wrong type.
Expected: class java.lang.Long, got class java.lang.String
org.codehaus.groovy.runtime.InvokerInvocationException:
org.springframework.orm.hibernate3.HibernateSystemException: Provided
id of the wrong type. Expected: class java.lang.Long, got class
java.lang.String; nested exception is
org.hibernate.TypeMismatchException: Provided id of the wrong type.
Expected: class java.lang.Long, got class java.lang.String
at
org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:
92)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:226)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:
899)
at
groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:946)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:
740)
at groovy.lang.Closure.call(Closure.java:292)
at groovy.lang.Closure.call(Closure.java:287)
at
org.codehaus.groovy.grails.web.servlet.mvc.SimpleGrailsControllerHelper.handleAction(SimpleGrailsControllerHelper.java:
525)
at
org.codehaus.groovy.grails.web.servlet.mvc.SimpleGrailsControllerHelper.executeAction(SimpleGrailsControllerHelper.java:
398)
at
org.codehaus.groovy.grails.web.servlet.mvc.SimpleGrailsControllerHelper.handleURI(SimpleGrailsControllerHelper.java:
237)
at
org.codehaus.groovy.grails.web.servlet.mvc.SimpleGrailsControllerHelper.handleURI(SimpleGrailsControllerHelper.java:
153)
at
org.codehaus.groovy.grails.web.servlet.mvc.SimpleGrailsController.handleRequest(SimpleGrailsController.java:
88)
at
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:
48)
at
org.codehaus.groovy.grails.web.servlet.GrailsDispatcherServlet.doDispatch(GrailsDispatcherServlet.java:
251)
at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:
809)
at
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:
476)
at
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:
431)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:
707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:
820)
at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
367)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
181)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
712)
at
org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at
org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:268)
at
org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
at
org.codehaus.groovy.grails.web.util.WebUtils.forwardRequestForUrlMappingInfo(WebUtils.java:
197)
at
org.codehaus.groovy.grails.web.util.WebUtils.forwardRequestForUrlMappingInfo(WebUtils.java:
184)
at
org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.doFilterInternal(UrlMappingsFilter.java:
116)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:
75)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1089)
at
org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.parsePage(GrailsPageFilter.java:
119)
at
org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter.doFilter(GrailsPageFilter.java:
82)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1089)
at
org.codehaus.groovy.grails.web.servlet.filter.GrailsReloadServletFilter.doFilterInternal(GrailsReloadServletFilter.java:
98)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:
75)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1089)
at
org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:
68)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:
75)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1089)
at
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:
96)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:
75)
at
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:
183)
at
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:
138)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1089)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
365)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
181)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
712)
at
org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
139)
at org.mortbay.jetty.Server.handle(Server.java:295)
at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
503)
at org.mortbay.jetty.HttpConnection
$RequestHandler.headerComplete(HttpConnection.java:827)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:511)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:
210)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:
379)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:
361)
at org.mortbay.thread.BoundedThreadPool
$PoolThread.run(BoundedThreadPool.java:442)
Caused by:
org.springframework.orm.hibernate3.HibernateSystemException: Provided
id of the wrong type. Expected: class java.lang.Long, got class
java.lang.String; nested exception is
org.hibernate.TypeMismatchException: Provided id of the wrong type.
Expected: class java.lang.Long, got class java.lang.String
at BookController$_closure3.doCall(BookController:22)
at BookController$_closure3.doCall(BookController)
Caused by: org.hibernate.TypeMismatchException: Provided id of the
wrong type. Expected: class java.lang.Long, got class java.lang.String
... 2 more


ไม่ทราบว่า error ลักษณะนี้คืออะไรครับ เจอมาหลายครับแล้วครับ
ผมไม่รู้สาเหตุครับ
ผมใช้ scaffold แล้วกำลังเล่นอยู่กับ หน้าที่มัน generate มาให้ครับ
แล้วมันก็เกิดแบบนี้ขึ้นครับ

หน้าเวปเป็นปกตินะครับ แต่ terminal แจ้งแบบนี้ขึ้นครับ

สรุปแล้วผมทำอะไรผิด หรือเป็น Bug ของ version นี้ครับ

mv.n...@gmail.com

unread,
Mar 3, 2008, 6:33:08 AM3/3/08
to กลุ่มผู้ใช้เกรลส์ในไทย
ขอโทษนะครับที่โพส error message ยาวแบบนี้
ถ้าจะกรุณาแนะนำวิธีโพสปัญหาลักษณะนี้ในคราวหน้าก็บอกได้นะครับ
เกรงใจครับที่โพสยาวๆเหมือน spam เลย :p

เหตุการแบบนี้มันจะฟ้องทุกๆครั้งที่ผม click id ที่เป็น link ในหน้า list
ครับ ซึ่งหลังจาก click แล้วก็ไปหน้า show/<id> นั้นๆได้ตามปกติครับ
ไม่ได้มีอะไรผิดพลาด(เท่าที่เห็น)ครับ

ขอบคุณครับ
> org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterI nternal(GrailsWebRequestFilter.java:
> 68)
>         at
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequest Filter.java:
> 75)
>         at org.mortbay.jetty.servlet.ServletHandler
> $CachedChain.doFilter(ServletHandler.java:1089)
>         at
> org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(Cha racterEncodingFilter.java:
> 96)
>         at
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequest Filter.java:
> 75)
>         at
> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(Delegat ingFilterProxy.java:
> 183)
>         at
> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFil terProxy.java:

Chanwit Kaewkasi

unread,
Mar 3, 2008, 2:33:13 PM3/3/08
to thai-gra...@googlegroups.com
้ขอโทษด้วยที่ไม่ได้เข้ามาตอบได้เร็วนักในช่วงนี้นะ้ครับ
เพราะตอนนี้ผมอยู่ฝรั่งเศสและไม่สะดวกที่จะเช็คเมล์ทุกวัน
้้
เรื่อง exception ตัวนี้เป็นไปได้ว่ามีการ define field ชือ id ไว้เป็น string ครับ
ข้อบังคับของ GORM คือต้องมี id เป็น long แต่ถ้าอยากใช้ id เป็น string
ต้องใช้ mapping DSL ในการประกาศเพิ่มเติมครับ

แต่คิดว่าอันนี้น่าจะเป็นการแปลง long ไปเป็น string
โดยไม่ได้ตั้งใจจากส่วนใดส่วนหนึ่งของโค้ด ลองหาดูนะครับ

-ชาญวิทย์

Virasak Dungsrikaew

unread,
Mar 3, 2008, 10:17:22 PM3/3/08
to thai-gra...@googlegroups.com
ขอบคุณครับ

แต่สงสัย exception ที่ throw ออกมาจัง จากที่อ่านดู GrailsExceptionResolver ทำก่อนที่จะ render page ทำไมมันยังไป render page ต่อได้อย่างปกติ
คือไม่เข้าใจ GrailsExceptionResolver ว่ามันทำงานแบบไหนกันแน่ ตรงนี้หาอ่านได้ที่ไหนครับ

เมื่อ 3/4/08, Chanwit Kaewkasi <cha...@gmail.com> เขียนว่า:

Chanwit Kaewkasi

unread,
Mar 7, 2008, 11:08:24 AM3/7/08
to thai-gra...@googlegroups.com
น่าสนใจครับ
วันนี้เพิ่งกลับมาถึงแมนเชสเตอร์ครับ เดี๋ยวเสาร์อาทิตย์นี้ผมไล่โค้ดให้

ไม่ทราบว่ามีวิธี reproduce อาการนี้มั้ยครับ

-ชาญวิทย์

Chanwit Kaewkasi

unread,
Mar 7, 2008, 4:41:51 PM3/7/08
to thai-gra...@googlegroups.com
สำหรับเรื่องการโพสต์ stack trace ยาว ๆ นั้นปกติในลิสต์อื่น ๆ ก็โพสต์กันครับ
แต่ถ้าคิดว่าเป็นเรื่องการรบกวนท่านอื่น ใช้บริการของ pastebin.com ก็ได้ครับ
ไม่ก็ตัดเฉพาะส่วนที่คิดว่าเกี่ยวข้องมาก็ได้ เนื่องจากปกติ stack trace
ของเกรลส์จะมีส่วนของ MOP layer ติดมาด้วย

-ชาญวิทย์

Chanwit Kaewkasi

unread,
Mar 8, 2008, 4:25:23 AM3/8/08
to thai-gra...@googlegroups.com
ดูจาก code มีการใช้ GrailsExceptionResolver ดักทุก ๆ exception ตั้งแต่
java.lang.Exception ลงมา ไว้ใน configuration ของ Spring MVC เพื่อ
forward ไปที่ URI /error ครับ

โดยจะ clean ตัว stack trace ด้วย GrailsUtil.sanitize แล้วพิมพ์ error
ออกมาทาง logger (ที่เห็นใน console)
จากนั้นจะห่อตัว exception เข้าไปไว้ใน object ของ
GrailsWrappedRuntimeException ก่อนที่จะไปค้นใน URL Mapping, resolve
view แล้วเอา object ที่ห่อแล้วส่งเข้า model ชื่อ "exception" ก่อนที่จะ
return เป็น ModelAndView ของ Spring MVC ครับ

จากโค้ด ถ้าไม่มีการตั้งค่า URL Mapping แล้วจะมีการใช้ ModelAndView ของ
super class ครับ
จากตรงนี้ผมคิดว่าอาจจะทำให้การ render page ยังเป็นปกติอยู่ครับ

-ชาญวิทย์

On 04/03/2008, Virasak Dungsrikaew <vir...@gmail.com> wrote:

Reply all
Reply to author
Forward
0 new messages