powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JPA createNativequery
7 сообщений из 7, страница 1 из 1
JPA createNativequery
    #38448573
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть запрос к БД

Код: java
1.
2.
3.
4.
5.
6.
7.
                Query query = em.createNativeQuery("select a, b from table where index= ?");
                String a= "";
                String b= "";

                query.setParameter(1, ""test);
                List<BeanAB> beanABList= (List<BeanAB>) query.getResultList();
        }




Почему beanABList на выходе содержит массив object а не BeanAB
...
Рейтинг: 0 / 0
JPA createNativequery
    #38448600
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
public class BeanAB implements Serializable {

    @Column(name = "a")
    private String a;

    @Column(name = "b")
    private String b;

    public BeanAB () {
    }

    public String getA() {
        return a;
    }

    public void setB(String b) {
        this.b= b;
    }

    public String getB() {
        return b;
    }

    public void setA(String a) {
        this.a= a;
    }

    @Override
    public boolean equals(Object o) {
        if(!( o instanceof BeanAB )) {
            return false;
        }
        BeanAB sd = (BeanAB )o;
        return sd.getA().equals(getA()) && sd.getB().equals(getB());
    }

    @Override
    public int hashCode() {
        return a.hashCode();
    }
}
...
Рейтинг: 0 / 0
JPA createNativequery
    #38448601
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что JPA провайдер понятия не имеет о том на какой класс вы хотите замапить результаты вашего SQL запроса.
Как он должен угадать что это запрос для BeanAB, а не для BeanTT, например?
...
Рейтинг: 0 / 0
JPA createNativequery
    #38448614
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczПотому что JPA провайдер понятия не имеет о том на какой класс вы хотите замапить результаты вашего SQL запроса.
Как он должен угадать что это запрос для BeanAB, а не для BeanTT, например?

Ну с другой стороны кастование проходит без ошибок


Те явно с бином не смогу работать?
...
Рейтинг: 0 / 0
JPA createNativequery
    #38448638
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-Ну с другой стороны кастование проходит без ошибок

Кастование к List происходии без ошибок, потому что метод действительно возвращает List.
Кастования к <BeanAB> не происходит потому что erasure. И компилятор там явно warning пишет, сообщая что там может оказаться совсем не BeanAB.

-=Koba=-Те явно с бином не смогу работать?
Ну, давайте я за вас пойду и почитаю документацию
http://docs.oracle.com/javaee/6/api/javax/persistence/EntityManager.html#createNativeQuery(java.lang.String, java.lang.Class) createNativeQuery

Query createNativeQuery(java.lang.String sqlString,
java.lang.Class resultClass)

Create an instance of Query for executing a native SQL query.

Parameters :
sqlString - a native SQL query string
resultClass - the class of the resulting instance(s)
Returns :
the new query instance
...
Рейтинг: 0 / 0
JPA createNativequery
    #38450181
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переделал

Вызов
Код: java
1.
2.
3.
                Query query = em.createNativeQuery("select A, B from tableAB where AB = ?", beanAB.class);
                query.setParameter(1, "test");
                List<BeanAB> beanABlist= query.getResultList();



BeanAB
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
@Entity
@Table(name = "tableAB")
public class BeanAB implements Serializable {

    private static final long serialVersionUID = 1L;

    @Column(name = "A")
    private String a;

    @Column(name = "B")
    private String sSHIFT;

    beanAB() {
    }

    public String getA() {
        return a;
    }

    public void setA(String a) {
        this.a= a;
    }

    public String getB() {
        return b;
    }

    public void setB(String b) {
        this.b= b;
    }

    @Override
    public boolean equals(final Object obj) {
...
    }

    @Override
    public int hashCode() {
...
    }




Ловлю ошибку
javax.persistence.PersistenceException: org.hibernate.MappingException: Unknown entity: ru...BeanAB


Что тут не так?
...
Рейтинг: 0 / 0
JPA createNativequery
    #38450199
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,
проверьте, есть ли маппинг для этой сущности
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JPA createNativequery
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]