getByProperty查询到多条数据抛异常

yun-zuoyi
许心洁 6 years ago
parent b15534d558
commit 7740503a97

@ -10,6 +10,7 @@ import org.hibernate.NonUniqueResultException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.data.jpa.repository.support.SimpleJpaRepository; import org.springframework.data.jpa.repository.support.SimpleJpaRepository;
import org.springframework.util.CollectionUtils;
import javax.persistence.*; import javax.persistence.*;
import java.io.Serializable; import java.io.Serializable;
@ -218,6 +219,7 @@ public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRep
/** /**
* *
*
* @param conditionName * @param conditionName
* @param conditionValue * @param conditionValue
* @param propertyName * @param propertyName
@ -478,25 +480,22 @@ public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRep
@Override @Override
public T getByProperty(DdlPackBean packBean) { public T getByProperty(DdlPackBean packBean) {
try {
List<T> list = findByHqlWhere(packBean); List<T> list = findByHqlWhere(packBean);
return list.size() != 0 ? list.get(0) : null; if (CollectionUtils.isEmpty(list)) {
}catch(NoResultException ne){
LOGGER.error("数据不存在DdlPackBean{}", packBean); LOGGER.error("数据不存在DdlPackBean{}", packBean);
return null; throw new RuntimeException("数据不存在");
}catch(NonUniqueResultException ex){ } else if (list.size() > 1) {
LOGGER.error("查询单条记录但出现多条。packBean{}", packBean); LOGGER.error("查询单条记录但出现多条。packBean{}", packBean);
throw new RuntimeException("存在多条记录" + ex.getMessage()); throw new RuntimeException("存在多条记录");
} }
return list.iterator().next();
} }
@Override @Override
public T getByProperty(String propertyName, Object value) { public T getByProperty(String propertyName, Object value) {
String queryString = "from " + persistentClass.getSimpleName() + " as model where model." + propertyName + "= :" + propertyName; String queryString = "from " + persistentClass.getSimpleName() + " as model where model." + propertyName + "= :" + propertyName;
try { try {
List<T> list = entityManager.createQuery(queryString).setParameter(propertyName, value).getResultList(); return (T) entityManager.createQuery(queryString).setParameter(propertyName, value).getSingleResult();
return list.size() != 0 ? list.get(0) : null;
} catch (NoResultException ne) { } catch (NoResultException ne) {
LOGGER.error("数据不存在prop{},value{}", propertyName, value, ne); LOGGER.error("数据不存在prop{},value{}", propertyName, value, ne);
return null; return null;
@ -533,8 +532,7 @@ public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRep
} }
try { try {
List<T> list = queryObject.getResultList(); return (T) queryObject.getSingleResult();
return list.size() != 0 ? list.get(0) : null;
} catch (NoResultException ne) { } catch (NoResultException ne) {
LOGGER.error("数据不存在", ne); LOGGER.error("数据不存在", ne);
return null; return null;
@ -1150,6 +1148,7 @@ public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRep
/** /**
* *
*
* @param item * @param item
* @return * @return
*/ */
@ -1213,6 +1212,7 @@ public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRep
/** /**
* *
*
* @param field * @param field
*/ */
private void fieldSetInitParam(T item, Field field) { private void fieldSetInitParam(T item, Field field) {
@ -1268,6 +1268,7 @@ public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRep
/** /**
* *
*
* @return * @return
*/ */
@Override @Override
@ -1290,6 +1291,7 @@ public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRep
/** /**
* *
*
* @return * @return
*/ */
@Override @Override
@ -1328,6 +1330,7 @@ public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRep
/** /**
* *
*
* @return * @return
*/ */
@Override @Override
@ -1350,6 +1353,7 @@ public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRep
/** /**
* *
*
* @return * @return
*/ */
@Override @Override

Loading…
Cancel
Save