hql在spring jpa中选择一对多关系的查询

时间:2018-04-12 06:39:28

标签: java spring hibernate 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 class

的属性

谢谢你。

1 个答案:

答案 0 :(得分:0)

您的hql需要

from User u where u.username='Hussain'

它会将用户返回给您,并使用

user.getCountries()获取国家/地区。

更多信息:在现实世界中,我们通常会将一个国家/地区设置为多个用户。