|
|
@ -46,6 +46,8 @@ public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRep
|
|
|
|
|
|
|
|
|
|
|
|
private Class<T> persistentClass;
|
|
|
|
private Class<T> persistentClass;
|
|
|
|
private SnowflakeIdMaker snowflakeIdMaker;
|
|
|
|
private SnowflakeIdMaker snowflakeIdMaker;
|
|
|
|
|
|
|
|
/* 默认查询数据条数 */
|
|
|
|
|
|
|
|
private static final Pager DEFAULT_PAGER = new Pager(0,10);
|
|
|
|
|
|
|
|
|
|
|
|
public BaseRepositoryImpl(Class<T> clz, EntityManager em, SnowflakeIdMaker snowflakeIdMaker) {
|
|
|
|
public BaseRepositoryImpl(Class<T> clz, EntityManager em, SnowflakeIdMaker snowflakeIdMaker) {
|
|
|
|
super(clz, em);
|
|
|
|
super(clz, em);
|
|
|
@ -506,10 +508,9 @@ public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRep
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public T getByProperty(DdlPackBean packBean) {
|
|
|
|
public T getByProperty(DdlPackBean packBean) {
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
List<T> list = findByHqlWhere(packBean);
|
|
|
|
List<T> list = findByHqlWherePage(packBean,DEFAULT_PAGER);
|
|
|
|
return list.size() != 0 ? list.get(0) : null;
|
|
|
|
return list != null && list.size() != 0 ? list.get(0) : null;
|
|
|
|
}catch(NoResultException ne){
|
|
|
|
}catch(NoResultException ne){
|
|
|
|
LOGGER.error("数据不存在,DdlPackBean:{}",packBean);
|
|
|
|
LOGGER.error("数据不存在,DdlPackBean:{}",packBean);
|
|
|
|
return null;
|
|
|
|
return null;
|
|
|
@ -521,21 +522,18 @@ public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRep
|
|
|
|
|
|
|
|
|
|
|
|
@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;
|
|
|
|
return getByPropertyPager(new String[]{propertyName}, new Object[]{value}, DEFAULT_PAGER);
|
|
|
|
try {
|
|
|
|
|
|
|
|
List<T> list = entityManager.createQuery(queryString).setParameter(propertyName, value).getResultList();
|
|
|
|
|
|
|
|
return list.size() != 0 ? list.get(0) : null;
|
|
|
|
|
|
|
|
}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());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public T getByProperty(String[] propertyNames, Object[] values) {
|
|
|
|
public T getByProperty(String[] propertyNames, Object[] values) {
|
|
|
|
|
|
|
|
return getByPropertyPager(propertyNames, values, DEFAULT_PAGER);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public T getByPropertyPager(String[] propertyNames, Object[] values, Pager pager) {
|
|
|
|
|
|
|
|
pager = pager == null ? DEFAULT_PAGER: pager;
|
|
|
|
|
|
|
|
|
|
|
|
if(propertyNames.length != values.length){
|
|
|
|
if(propertyNames.length != values.length){
|
|
|
|
throw new IllegalArgumentException("参数名的数量和参数值不匹配!propertyNames:" + propertyNames.length + ",values:" + values.length);
|
|
|
|
throw new IllegalArgumentException("参数名的数量和参数值不匹配!propertyNames:" + propertyNames.length + ",values:" + values.length);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -561,7 +559,10 @@ public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRep
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
try{
|
|
|
|
try{
|
|
|
|
List<T> list = queryObject.getResultList();
|
|
|
|
List<T> list = queryObject
|
|
|
|
|
|
|
|
.setFirstResult(pager.getStartRow())
|
|
|
|
|
|
|
|
.setMaxResults(pager.getPageSize())
|
|
|
|
|
|
|
|
.getResultList();
|
|
|
|
return list.size() != 0 ? list.get(0) : null;
|
|
|
|
return list.size() != 0 ? list.get(0) : null;
|
|
|
|
}catch(NoResultException ne){
|
|
|
|
}catch(NoResultException ne){
|
|
|
|
LOGGER.error("数据不存在",ne);
|
|
|
|
LOGGER.error("数据不存在",ne);
|
|
|
|