Запрос выбора hql для отношения "один ко многим" весной jpa

У меня есть отношения "один ко многим" между классами User и Country. Я пытаюсь получить список стран на основе имени пользователя, но сталкиваюсь с ClassCastExeption

//User.java

@Entity(name = "user")
public class User {

@Id
private String username;
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
@JoinColumn(name = "username")
private Set<Country> countries;
//setters & getters
}

//Country.java

 @Entity
 public class Country {


@Id
@GeneratedValue
private int id;

private String name;
//setters and getters
 }

// контроллер

  System.out.println(entityManager.createNativeQuery("select * from country where username='Hussain'").getResultList().get(0) instanceof Country);

// вывод ложный

Я попытался создать запрос Hql следующим образом

  entityManager.createQuery("select c from Country c where c.username='Hussain'")

Это дает ошибку, например, c.username, не свойство класса Country

спасибо в нареч.

почему вы запрашиваете Country, а не User? у вас есть список стран в объекте "Пользователь".

fingerprints 12.04.2018 09:06

Чтобы заявить очевидное ... c.username НЕ ЯВЛЯЕТСЯ СОБСТВЕННОСТЬЮ класса Country, поэтому не запрашивайте его. Посмотри на свой класс! "username" находится в User

user8558216 12.04.2018 09:26
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
298
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш hql должен быть

from User u where u.username='Hussain'

Он вернет вам пользователя и будет использовать

user.getCountries() получить страны.

Подробнее: в реальном мире мы обычно устанавливаем одну страну для нескольких пользователей.

Другие вопросы по теме