I am trying to map a returned result of JPA native query to a un-mapped Java POJO class
and using @ConstructorResult
as below:
@SqlResultSetMapping(name = "productDetailResult", classes = {
@ConstructorResult(targetClass = com.rjil.mhood.jiostore.bo.ProductDetailBO.class,
columns = {
@ColumnResult(name = "iconId", type = Integer.class),
@ColumnResult(name = "thumbnailId", type = Integer.class),
@ColumnResult(name = "screenshotId1", type = Integer.class),
@ColumnResult(name = "screenshotId2", type = Integer.class),
@ColumnResult(name = "screenshotId3", type = Integer.class),
@ColumnResult(name = "screenshotId4", type = Integer.class),
@ColumnResult(name = "screenshotId5", type = Integer.class),
@ColumnResult(name = "name", type = String.class),
@ColumnResult(name = "description", type = String.class),
@ColumnResult(name = "downloadcount", type = BigDecimal.class),
@ColumnResult(name = "artifactSize", type = String.class),
@ColumnResult(name = "creationDate", type = Date.class),
@ColumnResult(name = "updatedDate", type = Date.class),
@ColumnResult(name = "price", type = BigDecimal.class),
@ColumnResult(name = "downloadUrl", type = String.class),
@ColumnResult(name = "contentProviderName", type = String.class) }) })
and the POJO class is :
public class ProductDetailBO {
private Integer iconId;
private Integer thumbnailId;
private Integer screenshotId1;
private Integer screenshotId2;
private Integer screenshotId3;
private Integer screenshotId4;
private Integer screenshotId5;
private String name;
private String description;
private BigDecimal downloadCount;
private String artifactSize;
private Date creationDate;
private Date updatedDate;
private BigDecimal price;
private String downloadUrl;
private String contentProviderName;
public ProductDetailBO() {
}
public ProductDetailBO(Integer iconId, Integer thumbnailId,
Integer screenshotId1, Integer screenshotId2,
Integer screenshotId3, Integer screenshotId4,
Integer screenshotId5, String name, String description,
BigDecimal downloadCount, String artifactSize, Date creationDate,
Date updatedDate, BigDecimal price, String downloadUrl,
String contentProviderName) {
this.iconId = iconId;
this.thumbnailId = thumbnailId;
this.screenshotId1 = screenshotId1;
this.screenshotId2 = screenshotId2;
this.screenshotId3 = screenshotId3;
this.screenshotId4 = screenshotId4;
this.screenshotId5 = screenshotId5;
this.name = name;
this.price = price;
this.creationDate = creationDate;
this.updatedDate = updatedDate;
this.description = description;
this.downloadCount = downloadCount;
this.artifactSize = artifactSize;
this.downloadUrl = downloadUrl;
this.contentProviderName = contentProviderName;
}
}
The POJO class contains a matching constructor but the query.getResultList()
returns an Object
array.
I want a ProductDetailBO
like so:
ProductDetailBO bo = query.getResultList("query","ProductDetailBO").get(0);
How can I do that?