关于以下示例,是否有可能将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();
最佳答案
如果需要返回一些字段,也可以选择它们并使用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
构造函数(路径必须完整),并在转换结果时调用它。避免返回数据库必须返回的所有内容非常方便(以创建表示结果的新类为代价):