@MappedSuperclass是JPA中的注解,表示该类是一个映射的超类,它不会映射到数据库表中,但是可以被其他实体类继承,继承它的实体类可以使用它的属性和方法。
使用@MappedSuperclass注解的类通常用于定义一些公共属性或方法,这些属性或方法可以被多个实体类继承使用,避免了代码的重复编写。
例如,我们可以定义一个抽象类BaseEntity,使用@MappedSuperclass注解标注,然后在实体类中继承它,这样就可以在实体类中使用BaseEntity中定义的公共属性和方法。
示例代码:
@MappedSuperclass
public abstract class BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
protected Long id;
// 其他共有属性和方法
}
@Entity
public class User extends BaseEntity {
private String username;
private String password;
// 其他属性和方法
}
@Entity
public class Order extends BaseEntity {
private String orderNo;
private Double amount;
// 其他属性和方法
}
在上面的例子中,BaseEntity类使用@MappedSuperclass注解标注,表示它是一个映射的超类,不会映射到数据库表中。User和Order类继承了BaseEntity类,可以使用它的id属性。