我有以下使用 Hibernate3 的代码。
List queryResult = session.createQuery("SELECT A, B from A, B where A.id = B.id");
for (Object o: queryResult) {
Object[] array = (Objec[]) o;
A a = (A) array[0];
B b = (B) array[1];
//do work
}
这很好用,因为我直接对休眠查询结果进行操作。但是,我也想将 queryResult 序列化为字符串,以便以后使用。我使用杰克逊的 json 库尝试了以下操作:
ObjectMapper m = new ObjectMapper()
final String queryResultString = m.writeValueAsString(queryResult);
然后我尝试从 Json 读取字符串并将其反序列化回 Hibernate 查询结果,这就是我遇到麻烦的时候。读取代码:
List r = m.readValue(queryResultString, List.class);
for (Object o: r) {
Object[] array = (Objec[]) o;
A a = (A) array[0];
B b = (B) array[1];
//do work
}
Object[] 的演员抱怨不能将 ArrayList 转换为对象数组。
我尝试使用 jackson hibernate 模块,但这也无济于事。所以我的问题是:a)使用 JSON 序列化执行此操作的正确方法是什么?b)为什么杰克逊将其反序列化为数组列表?