Java Hibernate继承更新问题

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

我有以下POJO:

@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,那么它将不起作用。看见