0
我有一個非常大的JSON字符串,我需要在數據存儲,通過非常大的手段,而不是48000個字符,而我使用SQL服務器來存儲在text
領域這一數據的SQL Server類型,然後我試着將其更改爲nvarchar(max)
,但似乎仍然沒有區別。大型JSON字符串中使用JAVA
正在發生我的字符串的問題,當我在數據庫中插入後40000個字符被截斷。我使用休眠到的數據存儲在該特定列,並將其映射爲java.lang.String
以下是我的代碼,從對象轉換到的JSONObject
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 jsonObject = JSONUtils.toJSONListWithKey(reports,"reports");
ins.setReportJson(jsonObject.toString());
instanceDAO.update(ins);
任何人都可以請建議/指引我哪裏威力的東西是想錯了,我應該採取如果這做法是不正確?
可以串不能被映射到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 –
你需要改變的是SQL列的類型,而不是Java類型。它仍然是一個字符串,但在數據庫上它將被映射爲TEXT。 –