diff --git a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/daoimpl/BaseRepositoryImpl.java b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/daoimpl/BaseRepositoryImpl.java index 6762066..a867bba 100644 --- a/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/daoimpl/BaseRepositoryImpl.java +++ b/modules/i3plus-pojo-base/src/main/java/cn/estsh/i3plus/pojo/base/jpa/daoimpl/BaseRepositoryImpl.java @@ -4,12 +4,14 @@ import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.jpa.dao.BaseRepository; import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; +import org.hibernate.NonUniqueResultException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.jpa.repository.support.SimpleJpaRepository; import javax.persistence.EntityManager; import javax.persistence.Id; +import javax.persistence.NoResultException; import javax.persistence.Query; import java.io.Serializable; import java.lang.reflect.Field; @@ -364,8 +366,12 @@ public class BaseRepositoryImpl extends SimpleJpaRep String queryString = "from " + persistentClass.getSimpleName() + " as model where model." + propertyName + "= :" + propertyName; try { return (T) entityManager.createQuery(queryString).setParameter(propertyName, value).getSingleResult(); - }catch(Exception e){ + }catch(NoResultException ne){ + LOGGER.error("数据不存在,prop:{},value:{}",propertyName,value,ne); return null; + }catch(NonUniqueResultException ex){ + LOGGER.error("查询单条记录,但出现多条。prop:{},value:{}",propertyName,value,ex); + throw new RuntimeException("存在多条记录:" + ex.getMessage()); } } @@ -397,25 +403,37 @@ public class BaseRepositoryImpl extends SimpleJpaRep try{ return (T) queryObject.getSingleResult(); - }catch(Exception e){ + }catch(NoResultException ne){ + LOGGER.error("数据不存在",ne); return null; + }catch(NonUniqueResultException ex){ + LOGGER.error("查询单条记录,但出现多条。",ex); + throw new RuntimeException("存在多条记录:" + ex.getMessage()); } } @Override public int listCount() { - Long count = entityManager.createQuery("select count(distinct model) from " + persistentClass.getName() + " as model",Long.class) - .getSingleResult(); - return count == null ? 0 : count.intValue(); + try{ + Long count = entityManager.createQuery("select count(distinct model) from " + persistentClass.getName() + " as model",Long.class) + .getSingleResult(); + return count == null ? 0 : count.intValue(); + }catch(NoResultException e){ + return 0; + } } @Override public int findByPropertyCount(String propertyName, Object value) { - String queryString = "select count(distinct model) from " + persistentClass.getName() + " as model where model." + propertyName + "= :" + propertyName; - Long count = entityManager.createQuery(queryString, Long.class) - .setParameter(propertyName, value) - .getSingleResult(); - return count == null ? 0 : count.intValue(); + try{ + String queryString = "select count(distinct model) from " + persistentClass.getName() + " as model where model." + propertyName + "= :" + propertyName; + Long count = entityManager.createQuery(queryString, Long.class) + .setParameter(propertyName, value) + .getSingleResult(); + return count == null ? 0 : count.intValue(); + }catch(NoResultException e){ + return 0; + } } @Override @@ -444,8 +462,12 @@ public class BaseRepositoryImpl extends SimpleJpaRep } } - Long count = (Long) queryObject.getSingleResult(); - return count == null ? 0 : count.intValue(); + try{ + Long count = (Long) queryObject.getSingleResult(); + return count == null ? 0 : count.intValue(); + }catch(NoResultException e){ + return 0; + } } @Override @@ -560,8 +582,12 @@ public class BaseRepositoryImpl extends SimpleJpaRep } } - Long count = entityManager.createQuery(queryString.toString(),Long.class).getSingleResult(); - return count == null ? 0 : count.intValue(); + try{ + Long count = entityManager.createQuery(queryString.toString(),Long.class).getSingleResult(); + return count == null ? 0 : count.intValue(); + }catch(NoResultException e){ + return 0; + } } @Override @@ -617,15 +643,22 @@ public class BaseRepositoryImpl extends SimpleJpaRep if (hqlWhere != null && hqlWhere.length() > 0) { queryString.append(hqlWhere); } - - Long count = entityManager.createQuery(queryString.toString(), Long.class).getSingleResult(); - return count == null ? 0 : count.intValue(); + try{ + Long count = entityManager.createQuery(queryString.toString(), Long.class).getSingleResult(); + return count == null ? 0 : count.intValue(); + }catch(NoResultException e){ + return 0; + } } @Override public int findByHqlCount(String hql) { - Long count = entityManager.createQuery(hql,Long.class).getSingleResult(); - return count == null ? 0 : count.intValue(); + try{ + Long count = entityManager.createQuery(hql,Long.class).getSingleResult(); + return count == null ? 0 : count.intValue(); + }catch(NoResultException e){ + return 0; + } } @Override @@ -636,8 +669,11 @@ public class BaseRepositoryImpl extends SimpleJpaRep queryObject.setParameter(paramName[i], paramValue[i].toString()); } } - - return (int) queryObject.getSingleResult(); + try{ + return (int) queryObject.getSingleResult(); + }catch(NoResultException e){ + return 0; + } } @Override @@ -702,25 +738,44 @@ public class BaseRepositoryImpl extends SimpleJpaRep @Override public int findBySqlCount(String sql) { - Long count = (Long) entityManager.createNativeQuery("select count(*) from ( " + sql + " ) as usertable",Long.class).getSingleResult(); - return count == null ? 0 : count.intValue(); + try{ + Long count = (Long) entityManager + .createNativeQuery("select count(*) from ( " + sql + " ) as usertable",Long.class) + .getSingleResult(); + return count == null ? 0 : count.intValue(); + }catch(NoResultException e){ + return 0; + } } @Override public double findBySqlSumDouble(String sql, String columnName) { - return (double) entityManager.createNativeQuery("select sum(" + columnName + ") from ( " + sql + " ) as usertable",Double.class) + try{ + return (double) entityManager + .createNativeQuery("select sum(" + columnName + ") from ( " + sql + " ) as usertable",Double.class) .getSingleResult(); + }catch(NoResultException e){ + return 0; + } } @Override public double findByHqlDouble(String hql) { - Double result = entityManager.createQuery(hql,Double.class).getSingleResult(); - return result == null ? 0 : result; + try{ + Double result = entityManager.createQuery(hql,Double.class).getSingleResult(); + return result == null ? 0 : result; + }catch(NoResultException e){ + return 0; + } } @Override public long findByHqlLong(String hql) { - return entityManager.createQuery(hql,Long.class).getSingleResult(); + try{ + return entityManager.createQuery(hql,Long.class).getSingleResult(); + }catch(NoResultException e){ + return 0; + } } @Override