另外一种处理hibernate转json字符串的解决方案
java.lang.NoSuchMethodException: Property 'delegate' has no getter method
JsonBeanProcessor:
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.processor.JsonBeanProcessor;
public class HibernateJsonBeanProcessor implements JsonBeanProcessor {
public JSONObject processBean(Object obj, JsonConfig jsonConfig) {
return new JSONObject();
}
}
JsonBeanProcessorMatcher:
import net.sf.json.processor.JsonBeanProcessorMatcher;
import java.util.Set;
import org.apache.log4j.Logger;
public class HibernateJsonBeanProcessorMatcher extends JsonBeanProcessorMatcher {
private static Logger log = Logger.getLogger(HibernateJsonBeanProcessorMatcher.class);
@Override
public Object getMatch(Class target, Set set) {
if (target.getName().contains("$$EnhancerByCGLIB$$")) {
log.warn("Found Lazy-References in Hibernate object "
+ target.getName());
return org.hibernate.proxy.HibernateProxy.class;
}
return DEFAULT.getMatch(target, set);
}
}
为JsonConfig注册BeanProcessor和JsonBeanProcessorMatche:
sonConfig conf = new JsonConfig();
conf.registerJsonBeanProcessor(org.hibernate.proxy.HibernateProxy.class,
new HibernateJsonBeanProcessor());
conf.setJsonBeanProcessorMatcher(new HibernateJsonBeanProcessorMatcher());