Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Hibernate: Mapping result set of native query with @SqlResultSetMapping

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...

like image 968
dime Avatar asked Nov 23 '25 00:11

dime


1 Answers

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)?

like image 142
Pascal Thivent Avatar answered Nov 25 '25 15:11

Pascal Thivent



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!