У меня есть такой код в JPQL и Spring Data JPA
@Query("SELECT bt FROM Textmessage t " +
"JOIN bt.hashtags h " +
"JOIN h.tag t " +
"JOIN t.type tt " +
"WHERE t= :mainTag " +
"GROUP BY bt " +
"ORDER BY " +
" SUM(CASE WHEN t IN :questionTags THEN tt.weight ELSE 0 END) DESC")
List findAnswers(
@Param("mainTag") Tag mainTag,
@Param("questionTags") List questionTags
);
но когда я запускаю запрос, это исключение произошло.
класс org.hibernate.type.internal.NamedBasicTypeImpl не может быть приведен к классу org.hibernate.metamodel.mapping.EntityValuedModelPart (org.hibernate.type.internal.NamedBasicTypeImpl и org.hibernate.metamodel.mapping.EntityValuedModelPart находятся в безымянном модуле загрузчика «app»)
Я тестировал код без условия «упорядочить по» и без «регистра», и он работает хорошо. Однако, когда я добавляю этот код, мне отображается указанная выше ошибка.
Я даже написал запрос следующим образом, что могло привести к другому результату и запросу, но он все равно дал мне ошибка выше.
@Query("SELECT bt, " +
"CASE WHEN bttag IN :tags THEN (SELECT SUM(bttagtype.weight) FROM Textmessage btq " +
"JOIN btq.Hashtags bthq " +
"JOIN bthq.tag bttagq " +
"JOIN bttagq.type bttagtype " +
"WHERE btq.id = bt.id) ELSE 0 END AS tagWeight " +
"FROM Textmessage bt " +
"LEFT JOIN bt.hashtags bth " +
"LEFT JOIN bth.tag bttag " +
"ORDER BY tagWeight DESC")
List findAnswerMessagesByChatIdOrderedByTagWeight(
@Param("tags") List tags);
Подробнее здесь: https://stackoverflow.com/questions/778 ... loader-app