0
我想從我的應用程序中刪除一個實體,並且出現一些錯誤。在Hibernate 4中刪除期間導致TransientObjectException的原因是什麼?
的實體如下:
ClinicInfo
@Entity
@Table
public class ClinicInfo extends PersistentObject {
private static final long serialVersionUID = -3352666863795986217L;
@ManyToOne
@JoinColumn(name="appTimezoneId")
@NotNull
private AppTimeZone appTimeZone;
...
...
...
...
}
AppTimeZone
@Entity
@Table
public class AppTimeZone extends PersistentObject {
private static final long serialVersionUID = 212088957599604285L;
@Column(nullable = false, unique = true)
@NotEmpty
private String zoneID;
...
...
}
PersistentObject
包含在此情況下,兩個ID和版本。
每當我試着刪除clinicInfo
,我得到以下錯誤:
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.myapp.entity.AppTimeZone
at org.hibernate.engine.internal.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:249)
at org.hibernate.type.EntityType.getIdentifier(EntityType.java:459)
at org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:275)
at org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:286)
at org.hibernate.type.TypeHelper.findDirty(TypeHelper.java:294)
在ClinicInfo
刪除,我已AppTimeZone對象的唯一標識。
現在,爲什麼hibernate會檢查AppTimeZone是否髒?
我的目標是隻刪除一個ClinicInfo
。
感謝指針。不過,我決定用'hql query'重寫刪除函數,只接受'Id'。 – abiieez