Java Hibernate继承更新问题
我有以下POJO:Java Hibernate继承更新问题,java,hibernate,jpa,Java,Hibernate,Jpa,我有以下POJO: @Entity @Table(name = "COMMUNICATION") @Audited public class CommunicationPojo implements Serializable { @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "TRANSMISSION_TYPE", nullable = false, unique = true) private T
@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
{}
如果使用传输类型邮件实例保存通信实例,则更改通信实例,使其包含传输类型邮件实例而不是传输类型邮件实例,并更新通信,hibernate将在TRANSMISSION_TYPE_AS2中插入一个条目,但不会删除TRANSMISSION_TYPE_MAIL中的旧条目。
是否有可能通过hibernate自动删除旧条目,或者我必须自己删除它?您可以添加到通信的OneTONE注释中
请注意,它与继承无关。我添加了orphaneremovation=true,但传输类型AS2条目仍然存在。Hibernate不会对传输类型AS2表执行删除操作。我还向transmission_type-pojo添加了hashcode-and-equals函数……至少在处理附加实体时,它应该可以工作。如果您在分离的实体上执行所有这些操作,然后使用saveOrUpdate或merge,那么它将不起作用。看见