views:

347

answers:

1

I'm trying the following:

MyResult.java :

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityResult;
import javax.persistence.SqlResultSetMapping;


@Entity
@SqlResultSetMapping(name = "myResults", entities = {@EntityResult(entityClass = MyResult.class)})
public class MyResult implements Serializable
{

    /**
     * 
     */
    private static final long   serialVersionUID    = -1934790337160508576L;

    @Column(name="X")
    private int x;

    @Column(name="Y")
    private double y;


    // 
    // Getters and Setters...
    //
}

And in other java class:

Query q = ((org.hibernate.ejb.QueryImpl) this.entityManager.createNativeQuery (this.sql,
                        "myResults")).getHibernateQuery ( );
List<MyResult> result = q.list ( );

When I run this code I get:

[PersistenceUnit: MyHibernatePgSql] Unable to configure EntityManagerFactory

And when I remove the: "@Entity" part from the MyResult.java i get:

org.hibernate.MappingException: Unknown SqlResultSetMapping [myResults]

I know that I'm doing something wrong but I don't know what? Also I can't find good documentation about this.

Thanks in advance

edit: The query looks like this: SELECT X, AGG_FUNC(F) AS Y FROM...

+1  A: 

Some remarks/questions:

  • Do you really get only [PersistenceUnit: MyHibernatePgSql] Unable to configure EntityManagerFactory without any stack trace or log?

  • Does your entity have an @Id annotation somewhere (required for an entity)?

  • Why do you call getHibernateQuery? This seems unnecessary and so does the cast into o.h.e.QueryImpl.

  • Why don't you use JPQL (in which case, you could use SELECT NEW assuming your entity does have the proper constructor)?

Pascal Thivent
Thanks for your suggestions. The problem was the missing @Id annotation. Rookie mistake :)
dime