o2sword 5 лет назад
Родитель
Сommit
d1ebfe1cb0

+ 5 - 4
o2server/x_file_assemble_control/src/main/java/com/x/file/assemble/control/factory/AttachmentFactory.java

@@ -1,6 +1,7 @@
 package com.x.file.assemble.control.factory;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -46,8 +47,8 @@ public class AttachmentFactory extends AbstractFactory {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<Attachment> root = cq.from(Attachment.class);
 		Predicate p = cb.isMember(person, root.get(Attachment_.shareList));
-		cq.distinct(true).select(root.get(Attachment_.person)).where(p);
-		return em.createQuery(cq).getResultList();
+		cq.select(root.get(Attachment_.person)).where(p);
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	public List<String> listPersonWithEditor(String person) throws Exception {
@@ -56,8 +57,8 @@ public class AttachmentFactory extends AbstractFactory {
 		CriteriaQuery<String> cq = cb.createQuery(String.class);
 		Root<Attachment> root = cq.from(Attachment.class);
 		Predicate p = cb.isMember(person, root.get(Attachment_.editorList));
-		cq.distinct(true).select(root.get(Attachment_.person)).where(p);
-		return em.createQuery(cq).getResultList();
+		cq.select(root.get(Attachment_.person)).where(p);
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	public Long countWithPersonWithShare(String owner, String person) throws Exception {

+ 3 - 2
o2server/x_file_assemble_control/src/main/java/com/x/file/assemble/control/factory/FileFactory.java

@@ -1,6 +1,7 @@
 package com.x.file.assemble.control.factory;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -28,7 +29,7 @@ public class FileFactory extends AbstractFactory {
 		Root<File> root = cq.from(File.class);
 		Predicate p = cb.equal(root.get(File_.reference), reference);
 		p = cb.and(p, cb.equal(root.get(File_.referenceType), referenceType));
-		cq.select(root.get(File_.id)).where(p).distinct(true);
-		return em.createQuery(cq).getResultList();
+		cq.select(root.get(File_.id)).where(p);
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 }

+ 5 - 2
o2server/x_file_assemble_control/src/main/java/com/x/file/assemble/control/jaxrs/file/ActionListReferenceType.java

@@ -2,6 +2,7 @@ package com.x.file.assemble.control.jaxrs.file;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.persistence.EntityManager;
 import javax.persistence.criteria.CriteriaBuilder;
@@ -9,10 +10,12 @@ import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 
+import com.google.gson.GsonBuilder;
 import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.container.factory.EntityManagerContainerFactory;
 import com.x.base.core.project.annotation.FieldDescribe;
 import com.x.base.core.project.gson.GsonPropertyObject;
+import com.x.base.core.project.gson.XGsonBuilder;
 import com.x.base.core.project.http.ActionResult;
 import com.x.base.core.project.http.EffectivePerson;
 import com.x.file.assemble.control.Business;
@@ -45,8 +48,8 @@ class ActionListReferenceType extends BaseAction {
 		CriteriaQuery<ReferenceType> cq = cb.createQuery(ReferenceType.class);
 		Root<File> root = cq.from(File.class);
 		Predicate p = cb.equal(root.get(File_.person), effectivePerson.getDistinguishedName());
-		cq.select(root.get(File_.referenceType)).where(p).distinct(true);
-		return em.createQuery(cq).getResultList();
+		cq.select(root.get(File_.referenceType)).where(p);
+		return em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList());
 	}
 
 	private Long countWithPersonWithReferenceType(Business business, EffectivePerson effectivePerson,