关于以下示例,是否可以将 AnsweredQuestion 实例的列表检索为问题的对象?
@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();
答案 0 :(得分: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
构造函数(路径必须完整)并在转换结果时调用它。它非常方便(以创建表示结果的新类为代价),以避免返回数据库必须返回的所有内容:)