Преобразование SQL в HQL для отдельных запросов [дубликат]

Сколько запросов мое приложение сможет обрабатывать одновременно с этим утверждением?

Это сильно зависит от вашего приложения. Каждый новый запрос будет иметь поток запущен - он зависит от того, сколько потоков ваша машина может обрабатывать. Я не вижу возможности ограничить количество потоков (например, uwsgi-предложения в производственном развертывании).

Каковы недостатки этого использования? Если я не ожидаю более нескольких запросов одновременно, могу ли я продолжать использовать это?

Переход от одного потока к многопоточному может привести к ошибкам параллелизма ... if вы используете это, будьте осторожны с тем, как вы обрабатываете глобальные объекты (см. объект g в документации!) и состояние.

73
задан Daniel 29 January 2011 в 10:25
поделиться

4 ответа

Вы используете объект Hibernate Query или JPA? Для JPA он должен работать нормально:

String jpql = "from A where name in (:names)";
Query q = em.createQuery(jpql);
q.setParameter("names", l);

Для Hibernate вам нужно использовать setParameterList:

String hql = "from A where name in (:names)";
Query q = s.createQuery(hql);
q.setParameterList("names", l);
137
ответ дан Daniel 22 August 2018 в 03:55
поделиться
  • 1
    Okey, проблема была использована? для обозначения параметров. С такими параметрами, как: peter это работает. – Daniel 28 January 2011 в 13:57
  • 2
    поэтому вам не нужны кавычки для каждой строки в списке? – CCC 26 November 2013 в 18:15
  • 3
    Как установить массив String [] в качестве параметра запроса – priyadarshini 31 May 2017 в 11:58
  • 4
  • 5
    IMP: скобки необходимы для более старых версий спящего режима. Новые версии не будут поддерживать () - по крайней мере, в моем случае. Также см. Это решение stackoverflow.com/a/21341663/6043669 – HopeKing 11 June 2018 в 08:48
3
ответ дан Attila T 22 August 2018 в 03:55
поделиться

в HQL вы можете использовать параметр запроса и установить Collection с помощью метода setParameterList.

    Query q = session.createQuery("SELECT entity FROM Entity entity WHERE name IN (:names)");
    q.setParameterList("names", names);
19
ответ дан michal.kreuzman 22 August 2018 в 03:55
поделиться

Оставляя круглую скобку и просто вызывая «setParameter», теперь работает, по крайней мере, с гибернатом.

String jpql = "from A where name in :names";
Query q = em.createQuery(jpql);
q.setParameter("names", l);
4
ответ дан Steven Spungin 22 August 2018 в 03:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: