2016-05-11 9 views
0

非常に大きなJSON Stringがデータに格納する必要があり、48000文字以上のSQL Serverを使用しています。text私はnvarchar(max)に変更しようとしましたが、まだ違いは見えません。JAVAを使用したSQL Serverの大規模なJSON文字列

DBに挿入すると40000文字後に文字列が切り捨てられます。私は

public static JSONObject toJSONListWithKey(List<?> object, String key) { 
     JSONObject jsonObject = new JSONObject(); 
     JSONArray jsonArray = new JSONArray(); 
     Gson gson = new Gson(); 
     try { 
      for (Object object2 : object) { 
       jsonArray.put(new JSONObject(gson.toJson(object2))); 
     } 

      if (null != key || !"".equals(key)) { 
       jsonObject.put(key, jsonArray); 
      } else { 
       jsonObject = new JSONObject(jsonArray.toString()); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return jsonObject; 
} 

と、次のjsonobjectするオブジェクトから変換私のコードは、私は、DBに格納する方法であることを特定の列にデータを格納するために休止状態使用して、次のjava.lang.String

としてそれをマッピングしています

JSONObject jsonObject = JSONUtils.toJSONListWithKey(reports,"reports"); 

ins.setReportJson(jsonObject.toString()); 

instanceDAO.update(ins); 

誰かが提案してください/私にガイドしてくれる場所が間違っているかもしれませんが、このアプローチが正しくない場合はどうすればよいですか?

答えて

1

insのマッピングを変更する必要がある場合があります。reportJsonの列には大きな文字列を入力できます。TEXTに変更することもできます。

how to set length of an column in hibernate with maximum length

+0

缶列にマップされない:

<property name="reportJson" > <column name="reportJson" sql-type="TEXT"/> </property> 

あなたは役に立つこの他の質問を見つけるかもしれない:あなたはマッピング設定用のXMLファイルを使用している場合は、このような列の型を指定することができますTEXTデータ型?現在、それはこのようなものです: '<プロパティ名= "reportJson" タイプ= "文字列"> \t \t \t <列名= "reportJson"/> ' –

+0

デフォルトでは、文字列はVARCHARとしてマッピングされています。長さを指定しないと、現在のニーズに合わないデフォルトの長さになることがあります。ここに記載されているように、現在の設定で指定することができます:http://stackoverflow.com/questions/3584509/how-to-set-hibernate-mapping-to-allow-for-strings-longer-than-255-characters –

+0

変更する必要があるのは、Java型ではなくSQL列の型です。それでも文字列ですが、データベース上ではTEXTとしてマップされます。 –

関連する問題