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。 –