我在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
的属性谢谢你。
答案 0 :(得分:0)
您的hql需要
from User u where u.username='Hussain'
它会将用户返回给您,并使用
user.getCountries()
获取国家/地区。
更多信息:在现实世界中,我们通常会将一个国家/地区设置为多个用户。