我想从我的用户表中获取不同城市的列表。我认为下面的代码可行,但会出错:
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();
...
它给出:类型不匹配无法将List转换为List。我尝试了两个第一个用户然后在getResult一个城市,但同样的错误下面一行。
我看到了一些示例,但并没有真正说明如何使用正确的代码来获取它只是SQL语法。
感谢您的帮助
尔杰斯
答案 0 :(得分: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);
它应该be:
TypedQuery<City> typedQuery =
entityManager.createNamedQuery("User.all.cities", City.class);
答案 1 :(得分:-2)
有效的代码是:
results = getJpaTemplate().execute(new JpaCallback<List<City>>() {
@Override
public List<City> doInJpa(EntityManager em) throws PersistenceException {
TypedQuery<City> query = em.createNamedQuery("User.all.cities", City.class);
return query.getResultList() ;
}
}) ;