0

问题:如何在 Hibernate 中指出 [ref] 是真正的主键,但是在更新记录时我希望它在 [objectID] 上应用 .update 或 .saveOrUpdate。

上下文:我有一个场景,我正在将信息从 web 服务同步到表中。在导入对象时,我会保留对象的唯一引用,这使我能够再次运行脚本并更新本地保存的对象信息。

示例:由三个字段组成的简单表。

[ref] [objectID] [objectTitle]


[ref] = 主键。新记录插入的增量。用于内部查找和关系关联。

[objectID] = 对象本身的唯一标识符。

[objectTitle] = 与 objectID 相关的信息。这可能会在更新时发生变化。


我对如何在 Hibernate 中进行设置有点困惑。看来我必须将 [ref] 设置为 @Id,以便使用生成器自动递增。问题是我希望使用 [objectID] 更新信息,而不是 [ref]。

4

2 回答 2

0

嗯,这很简单。

首先加载具有给定 objectID 的实体:

MyEntity m = 
    (MyEntity) session.createQuery("select m from MyEntity m where m.objectID = :objectID")
                      .setParameter("objectID", theObjectID)
                      .uniqueResult();

然后使用从 Web 服务获得的新标题更新此实体:

m.setObjectTitle(theObjectTitle);
于 2012-12-08T17:33:14.827 回答
-1

这是否可以更新表中的“id”列?.hbm 文件中的“id”如下所示:

<id name="id" type="int" column="id">
<generator class="increment"/>
</id>
于 2013-03-20T09:15:45.323 回答