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);
誰かが提案してください/私にガイドしてくれる場所が間違っているかもしれませんが、このアプローチが正しくない場合はどうすればよいですか?
缶列にマップされない:
あなたは役に立つこの他の質問を見つけるかもしれない:あなたはマッピング設定用のXMLファイルを使用している場合は、このような列の型を指定することができますTEXTデータ型?現在、それはこのようなものです: '<プロパティ名= "reportJson" タイプ= "文字列"> \t \t \t <列名= "reportJson"/> ' –
デフォルトでは、文字列はVARCHARとしてマッピングされています。長さを指定しないと、現在のニーズに合わないデフォルトの長さになることがあります。ここに記載されているように、現在の設定で指定することができます:http://stackoverflow.com/questions/3584509/how-to-set-hibernate-mapping-to-allow-for-strings-longer-than-255-characters –
変更する必要があるのは、Java型ではなくSQL列の型です。それでも文字列ですが、データベース上ではTEXTとしてマップされます。 –