Затмение жалуется на мой JPA NamedQuery - PullRequest
0 голосов
/ 08 сентября 2018

По какой-то причине Eclipse IDE жалуется на мой JPQL @ NamedQuery

Входные параметры могут использоваться только в предложении WHERE или предложении HAVING запроса.

и

Поле связи не может использоваться в пути элементов обновления выражение.

это мой запрос:

"UPDATE ereturn er " +
        "SET " +
        "er.shipper = :shipper, " +
        "er.consignee = :consignee, " +
        "er.notes = :notes, " +
        "er.pickupDateTime = :pickupDate, " +
        "er.productItems = :productItems, " +
        "er.returned = :returned, " +
        "er.returnMethod = :returnMethod, " +
        "er.rma = :rma, " +
        "er.scanDateTime = :scanTime, " +
        "er.status = :status, " +
        "er.dispatchedDate = :dispatchedTime, " +
        "er.barcode = :barcode, " +
        "er.groupName = :groupName " +
        "WHERE er.id = :id"

Есть мысли?

большое спасибо

Ответы [ 2 ]

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

Если ваша версия JPA 2.0 или ниже, вы можете использовать только параметры в предложении WHERE.

Это отличается от версии 2.1 и выше, как вы можете видеть в разделе 4.6.4 * 1003.* JSR 338: API персистентности Java TM, версия 2.1

Входные параметры могут использоваться только в предложении WHERE или предложении HAVING запроса, либо в качестве нового значения для элемента обновления вПредложение SET оператора обновления.

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

JPQL - не лучший вариант для операторов обновления, лучше просто обновить объект из контекста постоянства или использовать вместо него собственный запрос.

Я закончил выборкой объекта через JPQL и изменил объект с помощью механизма проверки грязных объектов hiberante.

...