我找到
允许一个类覆盖相同回调类型的继承回调方法,在这种情况下,不会调用被覆盖的方法。
@MappedSuperclass
class Parent {
@PrePersist
protected void _PrePersist() { // <--+
} // |
} // |
// |
@Entity // |
class Child { // |
@PrePersist // |
@Override // |
protected void _PrePersist() { // |
super._PrePersist(); // ---------+
}
}
问题:私有范围呢?
回调方法可以具有公共、私有、受保护或包级别的访问权限,但不能是静态或最终的。
@MappedSuperclass
class Parent {
@PrePersist
private void _PrePersist() {
// not invoked.
// is this method still, technically, 'overridden'?
}
}
@Entity
class Child {
@PrePersist
private void _PrePersist() {
// no way to invoke super._PrePersist().
// is this method still, technically, 'overriding' the parent's?
}
}
在这种情况下,Parent#_PrePersist()
不调用。这是正常的吗?
我用 EclipseLink 和 Hibernate 进行了测试