java.lang.NullPointerException 在 sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java :1009)

标签 java mysql hibernate nullpointerexception

       java.lang.NullPointerException
       at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1009)
       at java.lang.Float.parseFloat(Float.java:439)
       at ConvertReadings.Convertd(ConvertReadings.java:39)
       at UDPServer.main(UDPServer.java:73)

hibernate 配置文件

<hibernate-configuration>
             <session-factory>

        <property name="connection.driver_class">
            com.mysql.jdbc.Driver</property>
        <property name="connection.url">
        jdbc:mysql://localhost:1111/DB</property>
        <property name="connection.username">username</property>
        <property name="connection.password">password</property>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="connection.autoReconnect"> true</property>
            <property name="connection.autoReconnectForPools">true</property>
        <!--  <property name="c3p0.validate">true</property> -->
            <property name="current_session_context_class">thread</property>
            <property name="hibernate.format_sql">false</property>
            <property name="hibernate.connection.pool_size">5</property> 
            <property name="hibernate.c3p0.acquire_increment">1</property> 
        <property name="hibernate.c3p0.idle_test_period">1000</property> 
        <property name="hibernate.c3p0.max_size">5</property> 
        <property name="hibernate.c3p0.max_statements">0</property> 
        <property name="hibernate.c3p0.min_size">3</property> 
        <property name="hibernate.c3p0.timeout">5000</property>

ConvertReadings代码是

public class ConvertReadings {
public String Convertd(String a, String b, String c1, String c0 ) throws Exception
{
    Converter con= new Converter();
    int x;
    double i = Float.parseFloat(a);
    if (b.equalsIgnoreCase("HUM"))
    {
        double c=Float.parseFloat(c1);
        double d=Float.parseFloat(c0);
        x=con.convert(c, d, i);
        return String.valueOf(x);
    }
    else if (b.equalsIgnoreCase("CO"))
    {
        double c=Float.parseFloat(c1);;
        double d=Float.parseFloat(c0);
        x=con.convert(c, d, i);
        return String.valueOf(x);
}
    return "Invalid sensor reading";
}
}

出现异常的代码是

import java.util.Iterator;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.classic.Session;
public class FetchCoeff {
public SessionFactory factory;
public String[] testing(String x, String y) { ///here x=DevID and y= sensor type
//Session session= null ;
String c[] = new String[30];
Session session = factory.openSession(); 
    try{
String q= "SELECT d.c1, d.c0, d.DevID, d.SensorType FROM SensorReadings d WHERE d.DevID= :DevID AND d.SensorType= :SensorType";
Query query = session.createQuery(q);
query.setParameter("DevID",x);
query.setParameter("SensorType", y);
System.out.println("query executed");
for(Iterator it=query.iterate();it.hasNext();){
      Object[] ob = (Object[]) it.next();       // I am Facing problem here
        c[1]= (String)ob[0];  // contains coeff 1 c1
        c[0]= (String)ob[1];  // contains coeff 0 c0    
     }
}catch(HibernateException e){
    System.out.println("Hibernate exception occured");
    e.printStackTrace();
}catch(Exception d){
    System.out.println("exception occured");
    d.printStackTrace();
}
finally
{
session.close();
}
return c;
}
}

我几周前发布了它,我从“JB Nizet”那里得到了解决方案,但它只解决了一部分,现在我在下面的部分面临空指针异常

                for(Iterator it=query.iterate();it.hasNext();){
             Object[] ob = (Object[]) it.next();
                c[1]= (String)ob[0];
                c[0]= (String)ob[1];

我认为这个对象抛出空指针异常,但我不知道如何解决它。任何人都可以帮助我..在这里我创建了查询和迭代结果集并将其传递给字符串数组。

最佳答案

如果我没理解错的话,你多次执行了上面的方法,在一些调用之后,它抛出了上面的异常。

问题可能来自这样一个事实,即您正在阅读 Hibernate 配置并在每次方法调用时创建一个全新的 session 工厂和一个新的连接池。

以下应该只做一次。然后应在每次方法调用时重复使用相同的 session 工厂:

Configuration cfg= new Configuration();
cfg.configure("Hibernate.cfg.xml");
SessionFactory sessionfactory = cfg.buildSessionFactory();

关于java.lang.NullPointerException 在 sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java :1009),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11186755/

相关文章:

java - Spring MVC项目用hibernate无法理解如何在jsp中使用

java - 通过 hibernate 连接到 MS sql

java - 持久实体中的 InstantiationException

java - h2 数据库从单独的线程访问测试数据

java - 如何将自定义 View 添加到布局?

java - 如何在不使用 setPreferredSize() 的情况下调整 JScrollPane 中 JTable 的大小

mysql - 使用 MySQL Workbench 安全组通过 EC2 实例连接到 Amazon RDS 实例

java - 在 SpagoBI 5.1.0 中将小部件添加到主控室时出错

php - codeIgniter 闭包表模型

mysql - 根据外键检索多条记录时,有没有办法优化查询?