JPA NamedQuery得到不同的列

jes*_*rah 0 jpa distinct

我想从我的用户表中获取不同城市的列表.我认为下面的代码可以工作,但会出错:

User.java
@Entity
@Table(name="user_info")
...
@NamedQuery(name = "User.all.cities", query = "SELECT distinct u.city FROM User u"),
...
@embedded
private City city;

UserBusinessLogic.java:
...
TypedQuery<City> typedQuery = entityManager.createNamedQuery("User.all.cities",User.class);
List<City> names = typedQuery.getResultList();
...
Run Code Online (Sandbox Code Playgroud)

它给出:类型不匹配无法将List转换为List.我尝试了两个第一个用户然后在getResult一个城市,但同样的错误下面一行.

我看到了一些示例,但并没有真正说明如何使用正确的代码来获取它只是SQL语法.

谢谢你的帮助

枷锁

Pio*_*cki 10

第一件看起来不太好的事情是你要求City对象但声明要获得用户.

你有:

@NamedQuery(name = "User.all.cities", 
            query = "SELECT distinct u.city FROM User u"),

TypedQuery<City> typedQuery = 
                  entityManager.createNamedQuery("User.all.cities", User.class);
Run Code Online (Sandbox Code Playgroud)

它应该哪里:

TypedQuery<City> typedQuery = 
                  entityManager.createNamedQuery("User.all.cities", City.class);
Run Code Online (Sandbox Code Playgroud)