【发布时间】:2013-12-12 04:38:02
【问题描述】:
我有 2 个表 Asset 和 Asset_Dist_Types。 Asset 是父表,Asset_Dist_Types 是子表。 Asset_Dist_Types 有 2 列 assets_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 的入口如下。
@CollectionOfElements
@JoinTable(name = "ASSET_DIST_TYPE", joinColumns = @JoinColumn(name="ASSET_ID"))
@Column(name="LKP_DIST_TYPE")
private Set<Integer> distTypes = new LinkedHashSet<Integer>(0);
现在我想更新 Asset_Dist_Type 表的 lkp_dist_type 列。我有资产 ID 的列表。我已经编写了以下查询来更新它。
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.
由于我是休眠新手,所以我不知道解决方案是什么。有人可以帮我吗?
【问题讨论】:
-
谁能帮忙..!!!?
-
在您的 Hibernate 配置 (
hibernate.cfg.xml) 中,您可以添加<property name="show_sql">true</property>,然后所有生成的 SQL 语句都会记录到控制台。这可能对您有所帮助,您可以将该语句复制到 SQL 终端并在那里执行以查看它产生的错误。如果您仍然有问题,请。在终端执行时发布语句和错误。 -
感谢约翰娜的回复..!我为此采取了不同的方式并完成了它。