SpringBoot中JPA查询指定字段返回new map的用法

2018.5.6 SpringBoot

service层示例代码


import java.util.Date;
import java.util.List;
import java.util.Map;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.google.common.collect.Maps;

@Service
@Transactional
public class AttendanceRecordService {
    @PersistenceContext
    private EntityManager entityManager;

    @SuppressWarnings({ "unchecked", "rawtypes" })
    public Map<String, String> findByFdeviceCodeAndFrecordTimeBetween(String fdeviceCode, Date startTime,
			Date endTime) {
        String sql = "select new map(a.fpersonId as fpersonId, a.frecordTime as frecordTime) from AttendanceRecord a where a.fdeviceCode=?1 and a.frecordTime between ?2 and ?3";
        List<Map> resultList = entityManager.createQuery(sql).setParameter(1, fdeviceCode).setParameter(2, startTime)
				.setParameter(3, endTime).getResultList();
        Map<String, String> recordMap = Maps.newHashMap();
        for (Map m : resultList) {
	    recordMap.put(m.get("fpersonId").toString() + m.get("frecordTime").toString(), "1");
        }
        return recordMap;
    }

}

更新列表:

*

参考文章:

相关阅读