我的实体级层次结构以MappedSuperclass开头,提供" status"属性并在"删除":
的情况下声明查询重定向器@MappedSuperclass
@AdditionalCriteria(value = "this.entityStatus <> 'DELETED'")
@QueryRedirectors(delete = LogicDeleteInterceptor.class)
public abstract class AStatusEntity
{
private String entityStatus;
...
}
然后是一个来自AStatusEntity的User实体,为更多的子类声明了JOINED策略:
@Entity
@Table(name = "USERS")
@Inheritance(strategy = InheritanceType.JOINED)
public class User extends AStatusEntity
{
...
}
最后是UserProfile实体,派生自User:
@Entity
@Table(name = "USER_PROFILE")
public class UserProfile extends User
{
...
}
User实体正确地继承了删除重定向器,因此当我调用&#34; remove&#34;时,它会被软删除(status =&#34; DELETED&#34;)。在它上面。
对于UserProfile,情况有所不同:当我打电话&#34;删除&#34;在UserProfile实体实例上,忽略删除重定向器(在调试期间忽略重定向器主体中的任何断点),EclipseLink尝试硬删除DB上的UserProfile行和User行(JOINED strategy =&gt;两个不同的表) )。
我已尝试在UserProfile类本身上应用重定向器,如下所示:
@Entity
@Table(name = "USER_PROFILE")
@QueryRedirectors(delete = LogicDeleteInterceptor.class)
public class UserProfile extends User
{
...
}
但它仍然被忽略,并尝试进行硬删除。
我缺少什么?...
环境: EclipseLink版本是2.6.3 | Oracle JVM 1.8.0_91 x64 |执行环境:Apache Karaf OSGi容器版本4.0.4 |操作系统:Ubuntu Linux x86_64