MappedSuperclass
我们对许多实体 Bean 使用 @MappedSuperclass
来获取通用属性。
使用 @Id
、@Version
和 @WhenModified
属性的映射超类很常见,如下面的示例所示,并且映射超类扩展 Model 也很常见。
package org.example.domain;
import io.ebean.Model;
import io.ebean.annotation.WhenCreated;
import io.ebean.annotation.WhenModified;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import javax.persistence.Version;
import java.time.Instant;
/**
* Base domain object with Id, version, whenCreated and whenModified.
*/
@MappedSuperclass
public abstract class BaseDomain extends Model {
@Id
long id;
@Version
Long version;
@WhenCreated
Instant whenCreated;
@WhenModified
Instant whenModified;
// getters and setters
...
}
然后,我们的实体 Bean 扩展它来继承通用属性。
Customer 扩展 BaseDomain
...
@Entity
public class Customer extends BaseDomain {
String name;
LocalDate registered;
...