javax.persistence.EntityManager.createQuery: когда с / когда без resultClass - PullRequest
0 голосов
/ 13 сентября 2018
  • javax.persistence.EntityManager.createQuery(String qlString)
  • javax.persistence.EntityManager.createQuery(String qlString, Class<ResultType> resultClass)

В каких случаях достаточно qlString и в каких случаях мне также необходимо добавить resultClass?

И: какую роль играет тип результата в этом отношении (List<ResultType> result = q.getResultList())?

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Класс результата используется для автоматического приведения вашего результата к заданному типу. Если вы не укажете его, результатом будет список массивов объектов. List<Object[]>

В Java обычно невозможно привести тип из одного универсального типа к другому, поэтому всегда используйте версию с типом, так как следующий код будет более понятным, безопасным и не потребует приведения.

Если в запросе вы выбираете только определенные поля, а не одно поле или объект, указывать его не нужно, поскольку возвращается значение по умолчанию List<Object[]>.

0 голосов
/ 13 сентября 2018

javax.persistence.EntityManager.createQuery(String qlString) возвращает Query, а javax.persistence.EntityManager.createQuery(String qlString, Class<ResultType> resultClass) возвращает TypedQuery<ResultType>.

. Вы можете использовать оба для получения результатов, однако класс Query вернет неуниверсальный Object.экземпляры или List, в то время как TypedQuery<ResultType> вернет ResultType экземпляров или List<ResultType>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...