NamedNative query is throwing error 'missing discriptor'
Hello,
I want to execute a Query as "select DISTINCT productName, version from product where productGroup = :prodGroup". There is an entity configured as ProductRelations. I want to fetch this information from my JavaServiceFacade.
I have created a simple serialized DTO object as ProductType (productName, version) and using this as the result class.
The entity class is product.java. In my case, I dont want my service to return the entity object.
If I try the resultClass as product.java, this will not work, as I am not returning a primary key. I cannot use the primary key to get the DISTINCT of productName and versions :(
@NamedNativeQuery(
name = "findAllDistinctProducttypes",
query = "select distinct o.name, o.revision from product o where o.prodGroup = ?",
hints = {@QueryHint(name = "toplink.cache-usage", value="DoNotCheckCache")},
resultSetMapping = "producttypes",
resultClass = project1.ProductType.class
)
From the service facade class
@WebMethod
public List<ProductType> getProductByName(String productName) {
List<ProductType> productList = (List<ProductType>) getEntityManager().createNamedQuery("findAllDistinctProducttypes").setParameter(1,productName).getResultList(); //qry.getResultList();
}
when I run the above code, it is throwing me an exception as
Exception in thread "main" Local Exception Stack:
Exception [EclipseLink-6007] (Eclipse Persistence Services - 2.1.3.v20110304-r9073): org.eclipse.persistence.exceptions.QueryException
Exception Description: Missing descriptor for [class project1.ProductType].
Query: ReadAllQuery(name="findAllDistinctProducttypes" referenceClass=ProductType sql="select distinct o.name, o.revision from Lhproduct o where o.name = ?")
at org.eclipse.persistence.exceptions.QueryException.descriptorIsMissing(QueryException.java:438)
at org.eclipse.persistence.queries.ObjectLevelReadQuery.checkDescriptor(ObjectLevelReadQuery.java:748)
at org.eclipse.persistence.queries.ObjectLevelReadQuery.prePrepare(ObjectLevelReadQuery.java:2063)
at org.eclipse.persistence.queries.ObjectLevelReadQuery.checkPrePrepare(ObjectLevelReadQuery.java:836)
at org.eclipse.persistence.queries.ObjectLevelReadQuery.checkPrepare(ObjectLevelReadQuery.java:819)
at org.eclipse.persistence.queries.DatabaseQuery.prepareCall(DatabaseQuery.java:1588)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.getDatabaseQueryInternal(EJBQueryImpl.java:568)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createNamedQuery(EntityManagerImpl.java:1001)
at project1.JavaServiceFacade.getProductByName(JavaServiceFacade.java:151)
at project1.JavaServiceFacade.main(JavaServiceFacade.java:34)
Please help, how to resolve this issue. I
return productList;