0

关于以下示例,是否可以检索AnsweredQuestion实例列表作为Question的对象?

@MappedSuperclass
public abstract class Question{
  @Column(name="TITLE")
  private String title;
  ...
}

@Entity
@Table(name="ANSWEREDQUESTION")
public class AnsweredQuestion extends Question
{
  @Column(name="ANSWER")
  private String answer;
  ...
}

因为后代类有很多,所以只检索几列对我来说非常重要。我尝试了如下操作,但它仍然返回AnsweredQuestion列表:

queryStr = " select q from AnsweredQuestion q where ..."
TypedQuery<Question> query = entityManager.createQuery(queryStr, Question.class);
return query.setParameter( ... ).getResultList();
4

1 回答 1

2

如果需要返回几个字段,也可以选择它们并使用new运算符:

TypedQuery<Sample> query = entityManager.createQuery("select new com.acme.sample.Sample(e.fieldA, e.fieldB) from  AnsweredQuestion e", Sample.class);
return query.setParameter( ... ).getResultList();

JPA 实现将查找Sample构造函数(路径必须完整)并在转换结果时调用它。避免返回数据库必须返回的所有内容非常方便(以创建新类来表示结果为代价):)

于 2014-10-05T19:25:13.287 回答