89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966

Аннотации JPA

05.05.2015, 20:38. Показов 1248. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru