У меня есть репозиторий, который выполняет запрос и возвращает список массивов в соответствии с заданными параметрами.Я хочу преобразовать этот список в список объектов.Я новичок в Java, и я занимался этой проблемой в течение нескольких дней.Теперь вот мой репозиторий:
@Repository
public class AlarmDynamicSelection {
private EntityManagerFactory emf;
@PersistenceUnit
public void setEntityManagerFactory(EntityManagerFactory emf) {
this.emf = emf;
}
public List<Object> alarmSelection(List<String> fields, Map<String, Object> filters){
EntityManager em = this.emf.createEntityManager();
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Object> criteria = builder.createQuery( Object.class );
Root<ActiveAlarm> root = criteria.from( ActiveAlarm.class );
root.join("alarmClass", JoinType.LEFT);
root.join("networkElement", JoinType.LEFT);
List<Selection<?>> selectList = new LinkedList();
for (String item : fields) {
selectList.add(root.get(item));
}
criteria.multiselect(selectList);
ArrayList<Predicate> predicates = new ArrayList<>();
if (filters.get("details") != null) {
predicates.add(builder.like(builder.upper(root.get("details")), "%" + filters.get("details").toString().toUpperCase() + "%"));
}
if (filters.get("networkElement") != null) {
predicates.add(builder.like(builder.upper(root.join("networkElement").get("label")),
"%" + filters.get("networkElement").toString().toUpperCase() + "%"));
}
criteria.where(builder.and(predicates.toArray(new Predicate[0])));
List<Object> results = em.createQuery( criteria ).getResultList();
return results;
}
}
Параметры:
"fields": ["id", "details", "networkElement"],
"filters": {"id":[312,34], "details":"a" }
Результат:
[
[
123,
"adasd",
{
"id": 20,
"label": "test"
}
],
[
34,
"dfakrgfA",
{
"id": 1,
"label": "net"
}
],
[
312,
"dgfsesadfsafdf",
{
"id": 1,
"label": "net"
}
]
]
Я хочу преобразовать этот результат в следующее:
[
{
"id": 123,
"details": "adasd",
"networkElement": {
"id": 20,
"label": "test"
}
},
{
"id": 34,
"details": "dfakrgfA",
"networkElement": {
"id": 1,
"label": "net"
}
},
{
"id": 312,
"details": "dgfsesadfsafdf",
"networkElement": {
"id": 1,
"label": "net"
}
}
]
Ключи объектов должны исходить из field
параметр