我正在使用primefaces 3.2 in-cell编辑组件来更新具有复合主键的oracle DB表。用户应该能够编辑主键值,但是这样使用
em.merge(entity);
我收到以下错误
Exception [EclipseLink-7251] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.ValidationException
Exception Description: The attribute [voce] of class [entity.competenze_distaccati.CompetenzeDistaccatiPK] is mapped to a primary key column in the database. Updates are not allowed.
......这对我来说听起来很合理。问题是:如何让用户更改主键值? 使用更改的值调用rowEdit事件侦听器,因此我不知道哪个是执行删除插入的原始记录。
答案 0 :(得分:2)
允许修改主键不正确处理数据的方法。相反,允许删除并再次使用所需值添加记录。这样,您将遵循标准,并且您的问题也会得到解决。