我正在使用JDO使用Google Cloud SQL。当我尝试使用JDO PersistenceManager使用新键存储新对象时,它可以正常工作,但是当我尝试更新已经插入DB中的实体时,我会遇到错误:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '503062001-43661003' for key 'PRIMARY'
关键确实是重复的,但我想更新该对象。
可以使用PersistentManager.makepersistentall()方法或以另一种方式避免手动编写更新查询?
更多详细信息:我试图坚持的对象是这样定义的:
PersistenceCapable(table = "xxx")
public class XXX {
@PrimaryKey
@Index(name = "xxx_id")
private Long userId;
@PrimaryKey
@Index(name = "xxx_idx")
@Column(length = 128)
private String otherId;
...
}
如果要更新对象,则首先检索对象并进行更新(在同一TXN中,或分离并在分离时进行更新)。所有这些都将在JDO规格
中描述例如https://db.apache.org/jdo/pm.html,然后页面到"更新对象"