我可以提出两种解决方案:
变更继承
您得到的异常清楚地描述了您的问题:
User不是实体。使用接口声明为超类的任何类
@MappedSuperclass都不能是实体 (在标准JPA中-取决于您的JPA提供者) …让我为您指出我刚刚对一个类似问题的回答
因此,您描述了将超类定义为抽象实体将为您提供所需的行为。
额外:
如果您选择继承映射策略,因为
@Inheritance(strategy =InheritanceType.SINGLE_TABLE)您甚至不需要多个数据库表。这是一个很好的示例:JPA单表继承
变更模型(建议)
不要仅将用户实体划分为几个角色。将
Enum所有所需的角色设为,并将其作为字段添加到您的
User实体中。除非您需要您的管理员,来宾等成为自己的对象,否则这是更普遍的情况。



