Hibernate: Отображение результирующего набора собственного запроса с помощью @SqlResultSetMapping - PullRequest
3 голосов
/ 10 мая 2010

Я пытаюсь следующее:

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

И в других java-классах:

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

Когда я запускаю этот код, я получаю:

[PersistenceUnit: MyHibernatePgSql] Невозможно настроить EntityManagerFactory

И когда я удаляю часть "@Entity" из MyResult.java, я получаю:

org.hibernate.MappingException: неизвестно SqlResultSetMapping [myResults]

Я знаю, что делаю что-то не так, но не знаю что? Также я не могу найти хорошую документацию по этому поводу.

Заранее спасибо

edit: запрос выглядит так: SELECT X, AGG_FUNC(F) AS Y FROM...

1 Ответ

3 голосов
/ 10 мая 2010

Некоторые замечания / вопросы:

  • Вы действительно получаете только [PersistenceUnit: MyHibernatePgSql] Unable to configure EntityManagerFactory без какой-либо трассировки стека или журнала?

  • Есть ли у вашей сущности аннотация @Id где-нибудь (требуется для сущности)?

  • Почему вы звоните getHibernateQuery? Это кажется ненужным, как и приведение к o.h.e.QueryImpl.

  • Почему бы вам не использовать JPQL (в этом случае вы можете использовать SELECT NEW при условии, что у вашей сущности есть надлежащий конструктор)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...