0

嗨,我无法理解为什么会发生这种情况,因为我保存了一个新实体,它保存了所有列,但没有加入表列,并且下面给出的用于保存新实体的代码都没有抛出异常..

newEntity=setPropsFromTransientFields(newEntity,"newEntity");
sess.save(newEntity);

但是当我尝试更新现有记录时,它会成功保存连接表列

persistedEntity=setPropsFromTransientFields(persistedEntity,"updateEntity");
sess.saveOrUpdate(persistedEntity);

下面给出的连接表映射

@ManyToMany(targetEntity=TechnologyProduct.class)
    @JoinTable(
        name = "contact_technology",
        joinColumns = @JoinColumn(name="contact_id", referencedColumnName="id"),
        inverseJoinColumns = @JoinColumn(name="technology_id", referencedColumnName="id")
    )
    public List<TechnologyProduct> getTechKeywords() {
        return techKeywords;
    }
4

1 回答 1

0

Hibernate 默认不尝试做任何级联操作。所以如果你有实体

class E{
   List<X> xes;
}

那么你有责任妥善处理这种关系xes。那就是您需要确保 X 实体保存在数据库中。你也可以配置级联保存,然后 Hibernate 会自己处理这个。

您的更新按预期工作,因为相关对象(在我的示例中为 X)之前已添加到 Hibernate Session 中,并且 Hibernate 会自动跟踪它们的更改并执行所有必要的 DB 操作。这是我的猜测,因为我看不到如何从数据库中读取对象。

于 2013-04-29T06:38:25.740 回答