Проблема GROUP BY в SQL Server HIBERNATE

187
16 марта 2018, 13:51

Я не могу решить ошибку

Column 'cohort.id' is invalid in the select list because it is not contained 
in either an aggregate function or the GROUP BY clause.

Запрос вроде рабочий, поскольку на базу H2 все работает корректно, но на SQL Server нет. Вот сам запрос

@Query("select i.id, sum(r.dose) from Inspection i left join fetch i.cohort 
c left join fetch c.parent left join fetch i.user left join i.personal p 
left join i.result r where i.id in :inspection GROUP by i")

Буду благодарен Вашей помощи и подсказкам

Вот что прилетает в SQL Server Profiler

exec sp_executesql N'select inspection0_.id as col_0_0_, sum(result5_.dose) 
as col_1_0_, cohort1_.id as id1_4_1_, cohort2_.id as id1_4_2_, personal3_.id 
as id1_36_3_, inspection0_.id as id1_28_0_, inspection0_.cohort_id as 
cohort_11_28_0_, inspection0_.date as date2_28_0_, 
inspection0_.exposure_time as exposure3_28_0_, inspection0_.height as 
height4_28_0_, inspection0_.intake as intake5_28_0_, 
inspection0_.next_measurement as next_mea6_28_0_, inspection0_.note as 
note7_28_0_, inspection0_.personal_id as persona12_28_0_, inspection0_.unit 
as unit8_28_0_, inspection0_.updated as updated9_28_0_, inspection0_.user_id 
as user_id13_28_0_, inspection0_.weight as weight10_28_0_, cohort1_.code as 
code2_4_1_, cohort1_.name as name3_4_1_, cohort1_.parent_id as 
parent_i6_4_1_, cohort1_.type as type4_4_1_, cohort1_.updated as 
updated5_4_1_, cohort1_.user_id as user_id7_4_1_, cohort2_.code as 
code2_4_2_, cohort2_.name as name3_4_2_, cohort2_.parent_id as 
parent_i6_4_2_, cohort2_.type as type4_4_2_, cohort2_.updated as 
updated5_4_2_, cohort2_.user_id as user_id7_4_2_, personal3_.birth_date as 
birth_da2_36_3_, personal3_.first_name as first_na3_36_3_, 
personal3_.last_name as last_nam4_36_3_, personal3_.middle_name as 
middle_n5_36_3_, personal3_.sex as sex6_36_3_, personal3_.tab_number as 
tab_numb7_36_3_, personal3_.transfer_id as transfer8_36_3_ 
from inspection 
inspection0_ left outer join cohort cohort1_ on 
inspection0_.cohort_id=cohort1_.id left outer join cohort cohort2_ on 
cohort1_.parent_id=cohort2_.id left outer join personal personal3_ on 
inspection0_.user_id=personal3_.id left outer join person person4_ on 
inspection0_.personal_id=person4_.id left outer join inspection_result 
result5_ on inspection0_.id=result5_.inspection_id where inspection0_.id in 
(@P0) 
group by inspection0_.id order by inspection0_.id asc ',N'@P0 int',1
Answer 1

В SSMS есть Sql Server Profiler (Tolls). Запустите для нужной БД и посмотрите, какой запрос приходит на выполнение.

Думаю как только Вы увидите текст запроса - сразу поймёте в чём ошибка.

Answer 2

left join должен быть с связке с полями , по которым собственно и джоините (для SQL). Такой запрос не даст нужной структуры для (для SQL).

READ ALSO
Не могу подключить proxy к selenium

Не могу подключить proxy к selenium

Мне нужно подключить прокси с авторизацией, я только разобрался с работой selenium, думал и с этим разберусь, но ничего не выходитВроде бы как...

186
Как обработать картинку?

Как обработать картинку?

Обработкой картинок не занималсяЕсть картинка - на белом фоне синие точки

134
Java и pmnl файл

Java и pmnl файл

Есть файл pmnl в котором хранится сеть петриКак можно её загрузить и анализировать в java

152
Реализация “списка” с использованием RecyclerView

Реализация “списка” с использованием RecyclerView

Как можно, используя RecyclerView, сделать список такого типа? При этом все данные должны считываться с файла(это я могу сам)Главная загвоздка в том,...

134