Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966

Аннотации JPA

05.05.2015, 20:38. Показов 1222. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, всем!
Ребята подскажите пожалуйста как правильно аннотировать.
есть таблица скажем T1, в нем есть поля (id, name)
так вот в Entity я делаю сам запрос и геттер/сеттер методы:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Entity
@Table(name = "T1")
@NamedQueries({ @NamedQuery(name = "T1.findAll", query = "SELECT c FROM T1 c ")}
 
public class T1{    
    @Id
    @Column(name = "ID")
    private Integer id;
 
    @Column(name = "NAME")
    private String name;
         
    // Getters and setters are skipped  
}
ну как бы все правильно работает, а вот как поступить если мне нужна получить количество?
т.е. если запрос примерно такой:
SQL
1
SELECT COUNT(c.id) AS kolvo FROM T1 c
нужна ли аннотировать kolvo?
P.S. Но явно не с так на сколько я понимаю: @Column(name = "KOLVO")

Заранее спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.05.2015, 20:38
Ответы с готовыми решениями:

JPA аннотации и версия библиотеки для клиента
Интересует вопрос как правильно поступают в такого рода приложениях. Предварительные условия: допустим есть некая сущность Book,...

Конфигурирование и аннотации
Всем привет. Может кто поможет. Сразу скажу, что нельзя юзать никаких библиотек и т.п. Постараюсь максимально просто изложить проблему....

Spring и аннотации @Configuration & @Autowired
Здравствуйте! Не могу найти ответ на свой вопрос, подскажите возможно ли такое. При работе с веб проектом всю конфигурацию бинов...

19
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
06.05.2015, 18:11
Цитата Сообщение от asus Посмотреть сообщение
нужна ли аннотировать kolvo?
Нет, для псевдонимов внутри запроса полей и аннотаций не надо делать.

Если надо получить размер выборки, составляем соответствующий JPQL запрос, и он вернёт число:
http://www.objectdb.com/java/jpa/query/execute
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
06.05.2015, 18:15  [ТС]
Цитата Сообщение от MLPMan Посмотреть сообщение
Если надо получить размер выборки, составляем соответствующий JPQL запрос, и он вернёт число
вообщем мне надо получить количество абитуриентов который вводил оператор, а запрос примерно такой:
SQL
1
SELECT a.firstname, COUNT(u.login) AS kolvo FROM Abiturients a INNER JOIN a.users u WHERE u.iduser = a.users.iduser GROUP BY u.login
0
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
06.05.2015, 18:23
А какой тип запрос возвращает (в getSingleResult)? Вроде должно число быть, даже без AS kolvo.

Добавлено через 4 минуты
SELECT a.firstname, COUNT(u.login) ...
А не, не число. Какую-то коллекцию, наверное. Список списков что ли.
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
06.05.2015, 18:47  [ТС]
типа вот такой ответ нужен:
Operator | kolvo
Ivanov | 10
Sidorov | 5
Petrov | 8
0
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
06.05.2015, 18:56
Посмотрите, что вернёт getResultList(). Если не ошибаюсь, это должен быть список таких строк (каждая представлена списком из 2 значений).
0
 Аватар для KuKu
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
06.05.2015, 19:03
getSingleResult вернет один объект с дженеричным типом. При
Java
1
SELECT a.firstname, COUNT(u.login)
он вернет Object[2], можно еще писать как-то так
Java
1
SELECT new su.pkg.MyCustomClass(a.firstname, COUNT(u.login))
и он вернет тоже самое, но объектом. ТС-у, судя по всему, надо getResultList вместо getSingleResult
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
06.05.2015, 19:13  [ТС]
вот если был бы обычный запрос типа
SQL
1
SELECT a FROM Abiturients a
то мог бы обращаться всем полям через гет... и сет...
а тут как вот это не совсем понятно т.к. на таблице нет столбца с именем KOLVO...
0
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
06.05.2015, 19:23
asus, по индексу жи. Но если хочется именно поле, попробуйте реализовать тот способ с кастомным классом, что предложил товарищ KuKu.
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
07.05.2015, 13:40  [ТС]
KuKu, решил пойти по первой пути. для этого создал класс POJO ACount с нужными полями т.е. kolvo и firstName и методы геттер/сеттер.
а в сессионном бине сделал так:
Java
1
2
3
4
public List<ACount> getAC(){
List<ACount> list = em.createNativeQuery("select count(a.idabiturient) as kolvo, u.firstName as firstName from Abiturients a, Users u where a.iduser = u.iduser group by u.firstName").getResultList();
return list;
}
а вот уже в сервлете обращаюсь к getAC():
Java
1
2
3
4
5
.....
private SessionEJBLocal sel;
.....
 
System.out.println(sel.getAC()); // как бы получаю объекты, (сколько должно быть столько же получаю)
а вот когда обращаюсь к полям получаю эксепшен, т.е.
Java
1
System.out.println(sel.getAC().get(0).getfirstName() +" "+sel.getAC().get(0).getkolvo());
и получаю java.lang.Object cannot be cast to...
0
 Аватар для KuKu
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
07.05.2015, 15:06
Посмотри вот этот метод createNativeQuery(java.lang.String sqlString, java.lang.Class resultClass)
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
07.05.2015, 15:17  [ТС]
KuKu, если честно то ничего не понял вроде все делаю так как там указана...
0
 Аватар для KuKu
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
07.05.2015, 16:35
К jpa-шными провайдерами давно не подходил, чтобы точно синтаксис помнить. Так пробовали:
Java
1
em.createNativeQuery("sqlText", ACount.class)
?
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
07.05.2015, 18:35  [ТС]
получаю ошибку но пришла другая идея вот только ещё не пробовал... будет ли работать вот такой вариант JPQL
select u.login, size(u.abiturientslist1) from Users u
вроде должен работать вот только тут тоже наверное получается List<Object[]>...
что думаете?
0
 Аватар для KuKu
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
07.05.2015, 18:57
В jpql замапить на объекты можно так:
Цитата Сообщение от KuKu Посмотреть сообщение
SELECT new su.pkg.MyCustomClass(a.login, count(*)) from ... group by ...
С size-ом по идее должно прокатить, если объект описан как надо.

Добавлено через 2 минуты
Ща посмотрел для native запросов. Их по идее тоже можно замапить используя это и createNativeQuery(java.lang.String sqlString, java.lang.String resultSetMapping) - и походу это самый просто способ замапить нейтив запрос, что довольно печально, вроде в 21 веке живем
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
07.05.2015, 19:00  [ТС]
Цитата Сообщение от KuKu Посмотреть сообщение
С size-ом по идее должно прокатить, если объект описан как надо.
а вот как получить этот size из jsp? ну средствами JSTL
0
 Аватар для KuKu
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
07.05.2015, 19:04
Так так же как и другие объекты прокидываете в jsp, так же и это.
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
07.05.2015, 19:11  [ТС]
чуть поподробнее можно?
обычно если на сервлете
Java
1
request.setAttribute("list", list);
то на JPS примерно вот так
HTML5
1
${list.firstName}
а сайз буду получать типа так? ${list.abiturientslist1.size()}? кажется не совсем так будет...
0
 Аватар для KuKu
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
07.05.2015, 19:30
Этот size это только текст в jpql запросе, после выполнения запроса будет просто объект с каким-то полем. Если вы в jsp хотите работать с листом, то так можно взять его размер.
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
07.05.2015, 19:36  [ТС]
вроде решил свою проблему, вообщем надо было построит график из этих данных...
но все равно не совсем понял как правильно используется натив запросы и запросы с свойствами таблицы (имею ввиду ... AS ...).
кстати за ссылку спасибо вроде там есть...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.05.2015, 19:36
Помогаю со студенческими работами здесь

About JPA
1. В самой JPA нет обратной генерации сущностей из таблиц БД? Только через IDE? 2. В большинстве случаев генерация таблиц по сущностям...

SpringBoot + xml конфигурация. Не работает автосвязывание по аннотации
Всем доброго времени суток. Имеется приложение spring-boot-mvc. Конфигурация контекста частично задана аннотациями, частично в xml-е....

JPA: @Basic
Для чего используется эта аннотация? Из доков: The simplest type of mapping to a database column. The Basic annotation can be applied to...

JPA: Hibernate
Где-то читал, что реализация JPA от Hibernate это entity-manager. Но там даже нету классов типа javax.persistence ... Нашел такие классы...

JPA Java
сбросьте кто хороший код по использованию JPA Java , а что-то не могу разобраться


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru