Hibernate:如何更新不同的ID

时间:2012-12-08 17:19:24

标签: hibernate entity

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

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

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

[ref] [objectID] [objectTitle]


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

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

[objectTitle] =绑定到objectID的信息。这可能会在更新时发生变化。


我对如何在Hibernate中设置它感到困惑。看起来我将[ref]设置为@Id所以它将使用生成器自动递增。问题是我希望使用[objectID]更新信息,而不是[ref]。

2 个答案:

答案 0 :(得分:0)

嗯,这很简单。

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

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

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

m.setObjectTitle(theObjectTitle);

答案 1 :(得分:-1)

是否可以更新表格中的“id”列; .hbm文件中的'id'如下:

<id name="id" type="int" column="id">
<generator class="increment"/>
</id>