|
|
@@ -0,0 +1,34 @@
|
|
|
+package com.uas.platform.b2b.core.serializer;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.serializer.PropertyFilter;
|
|
|
+import org.hibernate.collection.spi.PersistentCollection;
|
|
|
+import org.hibernate.proxy.HibernateProxy;
|
|
|
+import org.hibernate.proxy.LazyInitializer;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Created by Pro1 on 2017/11/13.
|
|
|
+ *
|
|
|
+ * JSON序列化时,过滤Hibernate代理对象或者延迟加载的对象FetchType.LAZY
|
|
|
+ */
|
|
|
+public class LazyPropertyFilter implements PropertyFilter{
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean apply(Object object, String name, Object value) {
|
|
|
+ if (value instanceof HibernateProxy) {//hibernate代理对象
|
|
|
+ LazyInitializer initializer = ((HibernateProxy) value).getHibernateLazyInitializer();
|
|
|
+ if (initializer.isUninitialized()) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ } else if (value instanceof PersistentCollection) {//实体关联集合一对多等
|
|
|
+ PersistentCollection collection = (PersistentCollection) value;
|
|
|
+ if (!collection.wasInitialized()) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ Object val = collection.getValue();
|
|
|
+ if (val == null) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+}
|