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

Аннотации JPA

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

Новые блоги и статьи
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru