ResultTransformer как сделать вывод правильного json?
Всем привет! В общем у меня следующая проблема, для наглядности загружу код:
@Repository
public class QuestionDaoDtoImpl extends AbstractDAOImpl<QuestionDto, Long> implements
QuestionDaoDto {
@SuppressWarnings("unchecked")
@Override
public List<QuestionDto> getListQuestionDto() {
List<QuestionDto> questionDto = new ArrayList<>();
try {
questionDto = entityManager.createQuery("SELECT " +
"q.id, " +
"q.title, " +
"q.user.fullName, " +
"q.user.reputationCount, " +
"q.viewCount, " +
"q.countValuable, " +
"q.persistDateTime, " +
"t.id, " +
"t.name, " +
"t.description " +
"FROM Question q JOIN q.tags t")
.unwrap(Query.class)
.setResultTransformer(new ResultTransformer() {
@Override
public Object transformTuple(Object[] objects, String[] strings) {
TagDto tagDto = TagDto.builder()
.id((Long) objects[7])
.name((String) objects[8])
.description((String) objects[9])
.build();
List<TagDto> tagDtoList = new ArrayList<>();
tagDtoList.add(tagDto);
return QuestionDto.builder()
.id((Long) objects[0])
.title((String) objects[1])
.username((String) objects[2])
.reputationCount((Integer) objects[3])
.viewCount((Integer) objects[4])
.countValuable((Integer) objects[5])
.persistDateTime((LocalDateTime) objects[6])
.tags(tagDtoList)
.build();
}
@Override
public List transformList(List list) {
return list;
}
})
.getResultList();
Я получаю список json, но проблема заключается в том, что если у вопроса несколько тегов то приходит json следующего вида:
[{"id":2,"title":"test title","username":"Name","tags":[{"id":1,"name":"java","description":"java the best"}],"reputationCount":12,"viewCount":1,"countAnswer":null,"countValuable":1,"persistDateTime":"2020-05-06T17:31:31"},{"id":2,"title":"test title","username":"Name","tags":[{"id":2,"name":"sql","description":"i love sql"}],"reputationCount":12,"viewCount":1,"countAnswer":null,"countValuable":1,"persistDateTime":"2020-05-06T17:31:31"}]
Как можно увидеть я хочу получить один вопрос и список тегов к нему, но РезалтТрансформер устроен таким образом что он вызывается каждый раз пока есть что-то в таблице Я понимаю, что можно реализовать некоторую логику в методе transformList, но пока не понимаю как можно это сделать, чтобы json отображался в виде - 1 вопрос и к нему лист тегов, если есть идеи не стесняйтесь подскажите пожалуйста :)