实体类
import com.vladmihalcea.hibernate.type.array.IntArrayType;
import com.vladmihalcea.hibernate.type.array.StringArrayType;
import com.vladmihalcea.hibernate.type.json.JsonBinaryType;
import com.vladmihalcea.hibernate.type.json.JsonStringType;
import lombok.*;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.hibernate.annotations.TypeDefs;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@TypeDefs({
@TypeDef(
name = "string-array",
typeClass = StringArrayType.class
),
@TypeDef(
name = "int-array",
typeClass = IntArrayType.class
),
@TypeDef(name = "json", typeClass = JsonStringType.class),
@TypeDef(name = "jsonb", typeClass = JsonBinaryType.class)
})
@Entity
@Table(name="combination_holding_rule")
public class CombHoldingRule {
@Id
@Column(name="combination_hr_id")//Checked
private Integer combHoldingRuleId;
@Column(name="combination_hr_name")//Checked
private String combHoldingRuleName;
@Column(name="jurisdiction_id")//Checked
private Integer jurisdictionId;
@Column(name="function_group_id")//Checked
private Integer functionGroupId;
@Column(name="overall_netting_type")//Checked
private String overallNettingType;
@Column(name="package_id")//Checked
private Integer packageId;
@Type(type = "int-array")
@Column(
name = "holdingrule_list",
columnDefinition = "integer[]"
)
private int[] holdingRuleList;
}
在存储库中
@Query(value="from CombHoldingRule where packageId=:packageId")
List<CombHoldingRule> repoCHRFromPackageId(@Param("packageId") int packageId);
我将 JPAQuery 的结果放入 Entity 中,然后在服务层中执行以下操作
public List<CHRfromPackageIdDTO> getCHRFromPackageIdService(int packageId) {
List<CombHoldingRule> combHoldingRuleList = combinationHRrepo.
repoCHRFromPackageId(packageId);
List<CHRfromPackageIdDTO> combDTO = new ArrayList<>();
for ( CombHoldingRule combHoldingRule : combHoldingRuleList) {
CHRfromPackageIdDTO temp = new CHRfromPackageIdDTO(combHoldingRule.getCombHoldingRuleId(),
combHoldingRule.getCombHoldingRuleName(),
combHoldingRule.getHoldingRuleList());
combDTO.add(temp);
}
return combDTO;
}
也请检查HERE
注意:这是一种解决方法,我相信,真的不确定,如何直接从本地查询中获取值到自定义 Pojo 而不是实体类。如果有人为此发布答案,我将不胜感激。我会接受这个作为答案。