Вопрос

я использую JPQL Чтобы получить данные. Я могу получить данные, используя утверждение

List persons = null;
persons = em.createQuery("select p.albumName from PhotoAlbum p , Roleuser r 
where r = p.userId and r.userID = 1");

Теперь я могу получить имена альбома, используя это:

int i=0;
for (i=0;i<persons.size(); i++)
{   
     System.out.println("Testing n "+ i +" " +  persons.get(0));
}

Теперь я хочу получить имя альбома и ряд роли по имени firstname

Я использую запрос

persons = em.createQuery("select r.firstName , p.albumName from PhotoAlbum p ,   
Roleuser r where r = p.userId and r.userID = 1").getResultList();

Теперь, как я могу получить рядные ряды Имя и Albumname, так как Persons.get (0) возвращает объект

Запустив код:

 for (i=0;i<persons.size(); i++)
    {
        //r = (Roleuser) persons.get(i);
        System.out.println("Testing n "+ i +" " + persons.get(i));
    }

Я получаю это:

Testing n 0 [Ljava.lang.Object;@4edb4077
INFO: Testing n 1 [Ljava.lang.Object;@1c656d13
INFO: Testing n 2 [Ljava.lang.Object;@46dc08f5
INFO: Testing n 3 [Ljava.lang.Object;@654c0a43

Как мне снабдить persons.get(0) и получить firstname а также albumname?

Это было полезно?

Решение

Теперь, как заставить строки имени и Albumname в качестве персонала .get (0) возвращает объект

Запросы с несколькими select_expressions. В пункте выбора возврата Object[] (или а List из Object[]). Из спецификации JPA:

4.8.1 Тип результата Из пункта выбора

Тип результата запроса, указанного в пункте выбора запроса, представляет собой абстрактный тип схемы, тип состояния, результат агрегированной функции, результат работы конструкции или некоторая последовательность этих.

Тип результата пункта выбора определяется типов результатов select_expressions. содержащийся в нем. Когда кратно select_expressions. используются в пункте выбора, результат запроса имеет тип Object[], и элементы в этом результате соответствуют по порядку их спецификации в пункте выбора и в типе до результатов типов каждого из select_expressions..

Так что в вашем случае вы, вероятно, хотите что-то вроде этого:

for (i=0;i<persons.size(); i++) {
    //r = (Roleuser) persons.get(i);
    System.out.println("Testing n " + i + " " + persons.get(i)[0] + ", " + 
        persons.get(i)[1]);
}

Примечание. [LEFT [OUTER] | INNER ] JOIN синтаксис). Смотрите весь раздел 4.4.5 присоединяется в спецификации.

использованная литература

  • Спецификация JPA 1.0
    • Раздел 4.8.1 «Тип результата».
    • Раздел 4.8.2 "Выражения конструктора в пункте выбора"
    • Раздел 4.4.5 "Joins"
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top