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

Loading…
Cancel
Save