命名查询以返回List <string>

时间:2015-07-23 14:03:18

标签: string jpa dropwizard named-query

您好我的应用程序使用了dropwizard。

资源类

@Path("/people")
@Produces(MediaType.APPLICATION_JSON)
public class PeopleResource{

    private PersonDAO pdao;

    public PeopleResource(PersonDAO pdao) {
        this.pdao = pdao;
    }

    @GET
    @Timed
    @UnitOfWork
    public List<String> getAllPeople() {
        return pdao.findAll();
    }
}

DAO课程

public class PersonDAO extends AbstractDAO<Person> {

public PersonDAO(SessionFactory factory) {
    super(factory);
}

public List<String> findAll() {
    return list(namedQuery("com.example.findAll"));
}

public Person create(Person p) {
    return persist(p);

}

人类

@JsonIgnoreProperties(ignoreUnknown = true)
@Entity
@Table(name = "Person")

@NamedQueries({
    @NamedQuery( 
            name = "com.example.findAll",
            query = "SELECT distinct p.name FROM Person p"
    )
})

@JsonProperty
String name;

但是当我尝试访问资源时,它始终无法说DAO类中的方法'findAll'应该返回List<Person>而不是List<String>。我错过了什么?我用teh数据库检查了查询,它返回了正确的结果。 tehre是一种在namedQuery中配置查询返回类型的方法吗?

1 个答案:

答案 0 :(得分:0)

更改列表方法并使用键入的查询

TypedQuery<String> query =
      em.createNamedQuery("com.example.findAll", String.class);
  List<String> results = query.getResultList();