У меня есть 2 таблицы Asset и Asset_Dist_Types. Атрибут - родительский, а Asset_Dist_Types - дочерняя таблица. Asset_Dist_Types имеет 2 столбца asset_id и lkp_dist_type, где asset_id является первичным ключом в таблице Asset. В Asset_Dist_Types это много-много (у одного объекта asset_id может быть несколько записей lkp_dist_type.) В java у нас есть класс сущности только для таблицы Asset. В этом для Asset_Dist_Type они упоминают его как коллекцию элементов. В Asset.java запись для Asset_Dist_Type выглядит следующим образом.HQL Query не исполняется
@CollectionOfElements
@JoinTable(name = "ASSET_DIST_TYPE", joinColumns = @JoinColumn(name="ASSET_ID"))
@Column(name="LKP_DIST_TYPE")
private Set<Integer> distTypes = new LinkedHashSet<Integer>(0);
Теперь я хотел бы обновить столбец lkp_dist_type Asset_Dist_Type таблицы. У меня есть список идентификаторов активов. Я написал следующий запрос для его обновления.
int hql = entityManager.createQuery(
"update Asset a set a.distTypes = :distTypeParamId where a.assetId in (:assetIdParam)")
.setParameter("distTypeParamId", distTypeList)
.setParameter("assetIdParam", assetIdListToUpdateLOB)
.executeUpdate();
Но это бросает
javax.persistence.PersistenceException:
org.hibernate.exception.GenericJDBCException: could not execute update query.
Поскольку я новичок в спящий режим я не получаю то, что это решение. Может кто-нибудь, пожалуйста, помогите мне?
Может кто-нибудь помочь ..? !!! – Sanjay
В вашей конфигурации Hibernate ('hibernate.cfg.xml') вы можете добавить' true ', а затем все сгенерированные операторы SQL регистрируются на консоли. Это уже может помочь вам, и вы можете скопировать этот оператор в терминал SQL и выполнить его там, чтобы увидеть, какую ошибку он производит. Если у вас все еще есть проблемы, PLS. опубликовать сообщение о состоянии и ошибке при выполнении в терминале. –
Johanna
Спасибо Johanna за ответ ..! Я пошел по другому пути и закончил. – Sanjay