[code="ruby"]
public class SysModel extends BaseEntity {
@ManyToOne(cascade = { CascadeType.MERGE })
@JoinColumn(name = "PARENT_ID")
private SysModel sysModel;
.......
}
[/code]
映射文件大概如此, 有一个自关联字段。
在操作的时候,遇到一个问题,当此字段为 null 的时候,我可以保存,但是不能更新,报错:
Hibernate: update SYS_MODEL set DELETE_FLAG=?, MODEL_NAME=?, ORDER_ID=?, remark=?, PARENT_ID=?, url=?, version=? where id=?
2008-09-10 09:55:31,906 ERROR [org.hibernate.event.def.AbstractFlushingEventListener] -
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.sctt.system.sys.model.bean.SysModel
at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:219)
at org.hibernate.type.EntityType.getIdentifier(EntityType.java:397)
at org.hibernate.type.ManyToOneType.nullSafeSet(ManyToOneType.java:78)
也就是说,PARENT_ID=? 为 NULL 。我基本知道错误原因。
但是,我的本条数据,确实 没有外键呀, sysModel = null;
如何才能更新 这样的数据呢?往高人回答。