0
我有以下的POJOs:Hibernate的继承更新问题
@Entity
@Table(name = "COMMUNICATION")
@Audited
public class CommunicationPojo
implements Serializable
{
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "TRANSMISSION_TYPE", nullable = false, unique = true)
private TransmissionTypePojo transmissionType;
}
@Entity
@Table(name = "TRANSMISSION_TYPE")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@Audited
public abstract class TransmissionTypePojo
implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private long id;
@OneToOne(mappedBy= "transmissionType")
private CommunicationPojo communication;
}
@Entity
@Table(name = "TRANSMISSION_TYPE_AS2")
@Audited
public class TransmissionTypeAS2Pojo
extends TransmissionTypePojo
implements Serializable
{}
@Entity
@Table(name = "TRANSMISSION_TYPE_MAIL")
@Audited
public class TransmissionTypeMailPojo
extends TransmissionTypePojo
implements Serializable
{}
如果,如果保存的通信实例与TRANSMISSION_TYPE_MAIL实例,改变了通信实例,以便它包含TRANSMISSION_TYPE_AS2实例,而不是一个TRANSMISSION_TYPE_MAIL实例,并更新通信中,hibernate会在TRANSMISSION_TYPE_AS2中插入一个条目,但不会删除TRANSMISSION_TYPE_MAIL中的旧条目。 是否有可能通过休眠来自动删除旧条目,还是必须自己删除它?
我添加了orphanRemoval = true,但TRANSMISSION_TYPE_AS2条目仍然存在。 Hibernate不会对TRANSMISSION_TYPE_AS2表执行删除操作。我还将hashcode和equals函数添加到了transmission_type-pojo ... – Nephisto
它应该起作用,至少如果您正在处理附属实体。如果你在分离的实体上完成所有这些操作,然后使用saveOrUpdate或合并,它将无法工作。请参阅https://hibernate.onjira.com/browse/HHH-5559。 –