为什么这个JPA查询不返回我的特定类的列表?

时间:2012-05-07 16:15:28

标签: java sql jpa

我有一个JPA对象:

@Entity
@Table(name="WF_GROUP")
public class Group {
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private long id;
  private String groupName;
  private long parentId;

/* ... */

}

我有一个使用此方法的GroupDAO:

public List<Group> getAllGroups() {
  List<Group> groups = new ArrayList<Group>();
  String query = "select * from WF_GROUP";
  Query q = getEntityManager().createNativeQuery(query);
  groups.addAll( q.getResultList() );
  return groups;
}

问题是q.getResultList()返回一个Object类型的结果列表,而不是包含每个属性的一个对象数组。

为什么q.getResultList()不返回Group对象列表?

谢谢! 罗布

1 个答案:

答案 0 :(得分:3)

因为您没有指定本机查询应该返回哪个类。看看其他createNativeQuery方法,并采用其他参数。

请注意,使用JPA的目的是使用对象而不是数据库表。 JPQL就是为此而存在的。您应该使用以下代码:

String query = "select group from Group group"; // this is JPQL
TypedQuery<Group> q = getEntityManager().createQuery(query, Group.class);
groups.addAll(q.getResultList());