我无法理解为什么会发生这种情况我保存了一个新实体,它保存了所有列但没有连接表列,也没有为了保存新实体而给出下面给出的异常抛出代码..
newEntity=setPropsFromTransientFields(newEntity,"newEntity");
sess.save(newEntity);
但是当我尝试更新exixting记录时,它会成功保存连接表列
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;
}
答案 0 :(得分:0)
默认情况下,Hibernate不会尝试执行任何级联操作。所以如果你有实体
class E{
List<X> xes;
}
然后您负责正确处理关系xes
。那就是你需要确保X实体保存在DB中。您也可以配置级联保存,然后Hibernate将自行处理这个问题。
您的更新按预期工作,因为相关对象(我的示例中为X)之前已添加到Hibernate Session中,Hibernate会自动跟踪其更改并执行所有必要的数据库操作。这是我的猜测,因为我无法看到如何从DB读取对象。