0

我有一个 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 对象的列表?

谢谢!抢

4

1 回答 1

2

因为您没有指定本机查询应该返回哪个类。看看其他的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());
于 2012-05-07T16:21:16.293 回答