java - JPA - 是否可以将结果作为 @MappedSuperclass 的实例获得?

标签 java hibernate jpa entitymanager mappedsuperclass

关于以下示例,是否可以检索 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 构造函数(路径必须完整)并在转换结果时调用它。避免返回数据库必须返回的所有内容非常方便(以创建新类来表示结果为代价):)

关于java - JPA - 是否可以将结果作为 @MappedSuperclass 的实例获得?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26206261/

相关文章:

java - Spring : Could not determine type for: java. util.List

java - 在我们所有商店中按产品类别查找销售明细

java - core-ktx 1.7.0 和 Hilt

java - 保留拥有关系的实体,而不先获取关系的另一方

java - JBoss/EJB 与对称 DS

java - Spring Data JPA @Table 注释工作

java - JPA/Hibernate - 删除子项会删除父项(从同一个表中)

java - 改进随机生成函数

java - 我的 Android 应用程序找不到 XML 文件中声明的按钮

java - 如何知道对象与数据库相比发生了变化