Reputation: 2000
I just want to make a simple native query with EclipseLink, but I can't make it work
@Repository("CarsRepository")
public class JpaCarsRepository {
@PersistenceContext
private EntityManager em;
public List<Car> getCars(){
Query q=em.createNativeQuery("SELECT id,name_car FROM CARS",Car.class);
List<Car> results=q.getResultList();
My 'Car' class is defined as an @Entity. (my persistence.xml has just the basic connection settings) I get a 'Missing descriptor' error for class 'Car'.
Why is this happening? I saw a similar question which didn't help me.
2nd question:
If I don't specify the 2nd parameter of 'createNativeQuery' function (Car.class), it returns a list of Objects, so I can see results.get(0) value is [1 car]. I can iterate over the list of objects. So if
Object o=results.get(0)
I could create the Car objects manually, but I don't know how to get first value of the object, if I print o[0] to get value 1 of the object (which is [1 car]) I get the following error the type of expression must be array type but resolved to object
How could I access to each value of the object?
Upvotes: 4
Views: 19653
Reputation: 42114
It does not consider Car as entity, looks like it is not scanned. Does listing your entity inside class-element in persistence.xml help?
Your second attempt returns list of object arrays. To access values you have to first cast to the one row of result set to Object array:
Object[] o=results.get(0)
//types below are just guessed:
Integer id = o[0];
String name = o[1];
Upvotes: 2