在JDK1.5下面不能使用BigDecimal,但在JDK1.4下面却能用,是这样的吗?

解决方案 »

  1.   

    不可能,JDK1.4下面能用的JDK1.5都能使用,
    JAVA是高度向前兼容的
      

  2.   

    可以用的java.math 
    类 BigDecimal
    java.lang.Object
      java.lang.Number
          java.math.BigDecimal
    所有已实现的接口: 
    Serializable, Comparable<BigDecimal> 
      

  3.   

    public BigDecimal getNewDefectNo(String type) {
    Session session = HibernateUtil.getSession();
    String queryStr1 = "select max(no) as no from table where type = '"
        + type + "'";
    Query query = session.createSQLQuery(queryStr1).addScalar("no",
    Hibernate.BIG_DECIMAL);
    Object result = query.uniqueResult();
    log.info(">>>After query:"); 
    [color=#FF0000] BigDecimal returnResult = (BigDecimal) result;
    log.info(">>>returnResult TEST11:");
    returnResult = returnResult.add(new BigDecimal(1));
    log.info(">>>returnResult:"+returnResult); 
    return returnResult;
    }[/color]
    2009-11-25 16:13:56 [ExecuteThread: '13' for queue: 'weblogic.kernel.Default'] [org.hibernate.transaction.JDBCTransaction] [ERROR] - Could not toggle autocommit
    org.hibernate.HibernateException: Session is closed
    at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:130)
    at org.hibernate.transaction.JDBCTransaction.toggleAutoCommit(JDBCTransaction.java:174)
    at org.hibernate.transaction.JDBCTransaction.commitAndResetAutoCommit(JDBCTransaction.java:122)
    at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:95)
    at com.dit.util.HibernateUtil.commitTransaction(HibernateUtil.java)
    at com.dit.util.HibernateFilter.doFilter(HibernateFilter.java)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
    at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:644)
    at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:423)
    at weblogic.servlet.jsp.PageContextImpl.include(PageContextImpl.java:154)
    at jsp_servlet.__master._jspService(__master.java:150)
    at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
    at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1072)
    at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
    at com.dit.util.HibernateFilter.doFilter(HibernateFilter.java)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
    at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:326)
    at weblogic.servlet.internal.ServletResponseImpl.sendError(ServletResponseImpl.java:535)
    at weblogic.servlet.internal.WebAppServletContext.handleException(WebAppServletContext.java:4188)
    at weblogic.servlet.internal.WebAppServletContext.handleThrowableFromInvocation(WebAppServletContext.java:3966)
    at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3908)
    at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2766)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)
      

  4.   

    我这是一个部署在Weblogic的Web程序,在调试时就在上面那个procedure中,运行到语句
    “BigDecimal returnResult = (BigDecimal) result;”
    时就报错如上,给人的感觉的数据库连接的问题。
    1. 程序中有其它模块连的是相同数据库,都可以正常运行
    2. 将JDK由1.5换成1.4后这个问题就好了
    所以才想跟大家确认一下是否遇到过类似问题。
    Thanks!
      

  5.   

    returnResult = returnResult.add(new BigDecimal(1)); 
    应该是这句的问题吧jdk1.4里面BigDecimal不支持int的构造函数。
    1.4后就支持啦,改为:returnResult = returnResult.add(new BigDecimal(1.0)); 
      

  6.   

    应该不是的
    我看了一下,是session已经关闭了
    也就是说hibernate的lazy的问题
      

  7.   

    反正最后我将JDK从1.5换成1.4就好了,所以觉得很奇怪哈。看看大家还有什么高见没?