2017-10-16 5 views
0

でリストを返すために、どのように、私は、データベースからオブジェクトのリストを返すクラスを持って、このような何か:Tomcat上のApache Axis

List<Entity> list = null; 
Connection con = null; 
PreparedStatement pstm = null; 
ResultSet rs = null; 
try { 
     con = Connector.getConexion(); 
     String sql = "SELECT * FROM some_table LIMIT 10;"; 
     pstm = con.prepareStatement(sql); 
     rs = pstm.executeQuery(); 
     list = new ArrayList<>(); 
     EntityCrimesChicago ecc = null; 

     while (rs.next()) { 
      e = new Entity(); 
      e.setID(rs.getString(1)); 
      e.setCase_Number(rs.getString(2)); 
      list.add(e); 
     } 
     return list; 
catch { ... } 
finally { ... } 

エンティティとテーブルがString/varchar型としてすべてのフィールドを持っています、さらにID。

サービスは(これはWebメソッドである)とのリストを取得します。私はStringを返すようにWebメソッドを変更し、私はreturn things.toString();を使用する場合は、

public List<Entity> someThing(String q) { 
    DAOThings controller = new DAOThings(); 
    List<Entity> things = controller.getSomeThings(Integer.parseInt(q)); 
    return things; 
} 

この戻り

java.io.IOException: No serializer found for class Entity in registry [email protected] 

しかし、オブジェクトを返すが、彼のコンテンツはありません。

リストを正しく返すにはどうすればよいですか?

私はmanueally追加された文字列リストを返すと、うまく動作しようとします。

答えて

0

私は問題をオブジェクトをString配列に渡して解決します。私は、オブジェクトのリストを取得すると

は:

public List<Entity> someThing(String q) { 
    DAOThings controller = new DAOThings(); 
    List<Entity> things = controller.getSomeThings(Integer.parseInt(q)); 
    return things; 
} 

を私はこれを実行する必要があります。

public List<String[]> someThing(String q) { 
    DAOThings controller = new DAOThings(); 
    List<Entity> things = controller.getSomeThings(Integer.parseInt(q)); 
    List<String[]> list = new ArrayList<>; 

    for (Entity value : things) { 
      String[] array = new String[obj_fields]; 
      array[0] = value.getAny(); 
      ... 
      array[n] = value.getAny(); 
      list.add(array); 
    } 
    return list; 
} 

とApache Axisは、魔法を行います。