Browse Source

update

main
wangshaoping 1 year ago
parent
commit
78bac24727
  1. 37
      io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/impl/DaoServiceImpl.java

37
io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/impl/DaoServiceImpl.java

@ -15,6 +15,7 @@ import org.springframework.data.repository.core.EntityInformation;
import org.springframework.data.repository.support.Repositories; import org.springframework.data.repository.support.Repositories;
import org.springframework.data.util.DirectFieldAccessFallbackBeanWrapper; import org.springframework.data.util.DirectFieldAccessFallbackBeanWrapper;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import javax.persistence.criteria.*; import javax.persistence.criteria.*;
import javax.persistence.metamodel.PluralAttribute; import javax.persistence.metamodel.PluralAttribute;
@ -60,6 +61,11 @@ public abstract class DaoServiceImpl<E,ID extends Serializable,R extends DaoRepo
return null; return null;
} }
@Override
public String[] getDefaultSortBy() {
return null;
}
private void standardizeSingularAssociationAttributes(DirectFieldAccessFallbackBeanWrapper wrapper, ManagedTypeAttributes managedTypeAttributes){ private void standardizeSingularAssociationAttributes(DirectFieldAccessFallbackBeanWrapper wrapper, ManagedTypeAttributes managedTypeAttributes){
Map<String,SingularAttribute<?,?>> attributes =managedTypeAttributes.getSingularAssociationAttributes(); Map<String,SingularAttribute<?,?>> attributes =managedTypeAttributes.getSingularAssociationAttributes();
if(attributes==null || attributes.isEmpty()){ return;} if(attributes==null || attributes.isEmpty()){ return;}
@ -353,6 +359,7 @@ public abstract class DaoServiceImpl<E,ID extends Serializable,R extends DaoRepo
@Override @Override
public List<E> list(Specification<E> specification, QueryParameter queryParameter) throws Exception { public List<E> list(Specification<E> specification, QueryParameter queryParameter) throws Exception {
if(queryParameter!=null) { if(queryParameter!=null) {
setDefaultSortBy(queryParameter);
Sort sort=queryParameter.getSort(); Sort sort=queryParameter.getSort();
if(sort!=null){ if(sort!=null){
if(specification!=null) { if(specification!=null) {
@ -383,6 +390,7 @@ public abstract class DaoServiceImpl<E,ID extends Serializable,R extends DaoRepo
@Override @Override
public Page<E> query(Specification<E> specification, QueryParameter queryParameter) throws Exception { public Page<E> query(Specification<E> specification, QueryParameter queryParameter) throws Exception {
if(queryParameter!=null) { if(queryParameter!=null) {
setDefaultSortBy(queryParameter);
if(queryParameter.getPageable()){ if(queryParameter.getPageable()){
Pageable pageable =queryParameter.getJpaPageable(); Pageable pageable =queryParameter.getJpaPageable();
if(specification!=null) { if(specification!=null) {
@ -410,6 +418,22 @@ public abstract class DaoServiceImpl<E,ID extends Serializable,R extends DaoRepo
return QueryResult.emptyPage(); return QueryResult.emptyPage();
} }
@Override
public List<E> getDefaultValues() throws Exception{
return null;
}
@Override
@Transactional
public void resetDefaultValues() throws Exception {
List<E> values =getDefaultValues();
if(values!=null && values.size()>0){
repository.deleteAll();
repository.flush();
repository.saveAll(values);
}
}
/** /**
* 重新 new 一个被删除的实体对象 * 重新 new 一个被删除的实体对象
* 当一个实体被删除后,该实体将从 JPA Session 中脱离,在返回给客户端的 JSON 串时,可能涉及从实体中获取其他关联对象,此时就会出现 Session 状态错误 * 当一个实体被删除后,该实体将从 JPA Session 中脱离,在返回给客户端的 JSON 串时,可能涉及从实体中获取其他关联对象,此时就会出现 Session 状态错误
@ -425,4 +449,17 @@ public abstract class DaoServiceImpl<E,ID extends Serializable,R extends DaoRepo
repository.setId(obj,repository.getId(entity)); repository.setId(obj,repository.getId(entity));
return obj; return obj;
} }
private void setDefaultSortBy(QueryParameter queryParameter){
if (!queryParameter.existsSortBy()) { // 没有指定的排序器才使用默认排序器
String[] defaultSortBys = this.getDefaultSortBy();
if (defaultSortBys != null && defaultSortBys.length > 0) {
for (String sortBy : defaultSortBys) {
if (StringUtils.hasText(sortBy)) {
queryParameter.addSortBy(sortBy.trim());
}
}
}
}
}
} }

Loading…
Cancel
Save