注意到在mandarax自己提供的crm例子中有:
public Discount getDiscount() { try { return (result == null) ? null : (Discount) result.getResult(Discount.class,QUERY_VARIABLE); } catch (InferenceException x) { return null; } } 但是实际上这并不能完全说明问题,还应该类似JDBC,采用: if(result != null && result.next) return (Discount) result.getResult(Discount.class,QUERY_VARIABLE)
当然在mandarax的manual中,还是很清楚的说明了这一点,只是今天很生动的体会了这一点,即使判断了 result != null,在result.getResult(..)的时候,仍然throw exception:
java.lang.NullPointerException at org.mandarax.reference.ResolutionInferenceEngine$2.getResult(ResolutionInferenceEngine.java:328) at _publish._P_0hehe._index__jsp._jspService(_index__jsp.java:584) at com.caucho.jsp.JavaPage.service(JavaPage.java:75) at com.caucho.jsp.Page.subservice(Page.java:506) at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:182) at com.airinbox.album.AlbumServletFilter.doFilter(Unknown Source) at com.airinbox.album.AlbumServletFilter.doFilter(Unknown Source) at com.caucho.server.http.FilterChainFilter.doFilter(FilterChainFilter.java:88) at com.caucho.server.http.Invocation.service(Invocation.java:315) at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:135) at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:246) at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:163) at com.caucho.server.TcpConnection.run(TcpConnection.java:139) at java.lang.Thread.run(Thread.java:595) 
|