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)
hibernatecfgファイル
<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」から解決策を入手しましたが、解決したのは1つの部分だけで、以下の部分でNullポインター例外が発生しています。
for(Iterator it=query.iterate();it.hasNext();){
Object[] ob = (Object[]) it.next();
c[1]= (String)ob[0];
c[0]= (String)ob[1];
このオブジェクトはnullポインタ例外をスローしていると思いますが、それを解決する方法がわかりません。誰かがこれで私を助けることができます..ここで私はクエリと反復結果セットを作成し、それを文字列配列に渡します。