JPA:将本机查询提取的一组表列映射到实体

JPA:将本机查询提取的一组表列映射到实体,jpa,jpql,Jpa,Jpql,我知道可以使用@SqlResultSetMapping,但我不想从数据库中选择整个实体,而是选择一些字段,然后使用接受这些字段的构造函数之一将我映射到我的实体。是否可以仅为少数@FieldResult将结果映射为@EntityResult?我一直在尝试这样做,但一直都有一个错误,即没有为该实体中存在的某些字段指定映射。@SqlResultSetMapping的缺点是您必须选择所有列 手动迭代DB结果并填充对象的另一种方法。如果您使用的是JPA1.0,那么您唯一的选择(当然不考虑手动映射),就是使

我知道可以使用
@SqlResultSetMapping
,但我不想从数据库中选择整个实体,而是选择一些字段,然后使用接受这些字段的构造函数之一将我映射到我的实体。是否可以仅为少数
@FieldResult
将结果映射为
@EntityResult
?我一直在尝试这样做,但一直都有一个错误,即没有为该实体中存在的某些字段指定映射。

@SqlResultSetMapping的缺点是您必须选择所有列


手动迭代DB结果并填充对象的另一种方法。

如果您使用的是
JPA1.0
,那么您唯一的选择(当然不考虑手动映射),就是使用
@SqlResultSetMapping
并映射整个表列。使用
JPA2.1
可以添加
javax.persistence.ConstructorResult
(参见文档)以仅映射所需的列。

Ok,并根据指定的参数确定使用哪个构造函数?若字段的名称与表中的列不同(我应该在@ColumnResult中使用),那个么如何命名呢?例如,我从表字段nameEnglish中获取,但我想将其映射到实体中的名称?