您好我的应用程序使用了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中配置查询返回类型的方法吗?
答案 0 :(得分:0)
更改列表方法并使用键入的查询
TypedQuery<String> query =
em.createNamedQuery("com.example.findAll", String.class);
List<String> results = query.getResultList();