Я пишу собственный запрос в репозиторий jpa с левым соединением и получаю беспорядочный вывод, а добавление дополнительных столбцов в запрос вызывает ошибку преобразования из java.object в мой класс модели. Более того, когда я пытаюсь вернуть все из вывода соединения, это дает дублирование псевдонима использования идентификатора
Я попытался создать другой класс и интерфейс для хранения результата запроса, но этого не произошло
это репозиторий
@Repository
public interface GroupRepository extends JpaRepository<Groups, Long> {
@Query (value="SELECT gad.id ,gha.id as groupattributeid , gad.group_id ,gad.value , gad.attribute_id, gha.hierarchy_id FROM group_attr_data gad JOIN group_hierarchy_attributes gha ON gad.attribute_id = gha.id where gad.group_id = ?1",nativeQuery = true)
Collection<GroupAttData> viewGroupAttData(Long group_id);
}
это мой контроллер
public class GroupController {
@Autowired
GroupRepository groupRepository;
@RequestMapping(value="/view-group-attr-data", method = RequestMethod.POST, consumes="application/json" , produces = "application/json")
public Collection<GroupAttData> ViewGroupAttData(@RequestBody GroupAttrData request) throws ResourceNotFoundException{
if(groupRepository.viewGroupAttData(request.getGroup_id()).isEmpty()) {
throw new ResourceNotFoundException("groups not found " );
} else {
return (List<GroupAttData>) groupRepository.viewGroupAttData(request.getGroup_id());
}
}
}
это мой модельный интерфейс GroupAttData
public interface GroupAttData {
public Long getid();
public Long getgroup_id() ;
public Long getattribute_id();
public String getvalue();
public Long getgroupattributeid();
public Long gethierarchy_id();
}
Фактический результат должен быть
SELECT gad.id ,gha.id as groupattributeid , gad.group_id ,gad.value ,gad.attribute_id, gha.hierarchy_id FROM group_attr_data gad JOIN group_hierarchy_attributes gha ON gad.attribute_id = gha.id where gad.group_id = 1;
# id, groupattributeid, group_id, value, attribute_id, hierarchy_id
'299' '7' '1' '33' '7', '1'
грядущий результат
[
{
"hierarchy_id": 33,
"groupattributeid": 1,
"id": 7,
"value": "1",
"group_id": 7,
"attribute_id": 299
}
]
Как и для иерархии_id, это должно быть 1, где, поскольку приходящие выходные данные - 33 И для значения, оно должно быть 33, где, поскольку данные результата равны 1 при весенней загрузке.