这是一个基于Oliver Gierke suggestion的后续问题。
我们有两个表(几乎相同的信息)但由于某些外部原因,不能使用常见的单个表。我收到一个错误,基类不是映射实体。 Oliver Gierke在回答中提到它只适用于 单表 。我假设这就是原因。如果是这样,有人可以解释为什么会出现这种限制,以及如何进行以下工作。
基础实体:
@MappedSuperclass
public abstract class DecisionEntity {
继承类:
@Entity
@Table(name="DM_INSP_TASKING_RULES_RSLT")
public class DmInspTaskingRulesRslt extends DecisionEntity implements Serializable {
@Entity
@Table(name="DM_UW_REF_RULES_RSLT")
public class DmUwRefRulesRslt extends DecisionEntity implements Serializable {
存储库
@Repository
public interface DecisionManagementRepository<T extends DecisionEntity> extends JpaRepository<DecisionEntity, Long> {
定义了'packagesToScan'并列出了persistence.xml中的所有3个类。 我正在为'DecisionEntity'课程获得'非管理实体'。 我尝试了继承类型 - 'TABLE_PER_CLASS
答案 0 :(得分:1)
Spring Data JPA和Java Persistance API规范不支持此功能。
Spring Data JPA问题DATAJPA-264
存储库:如果实体不是@Entity(例如@MappedSuperclass),则在启动时抛出异常
Status: Investigating
Resolution: Unresolved
映射的超类,与实体不同,不可查询,不得作为参数传递给
EntityManager
或Query
次操作。由映射的超类定义的持久关系必须 是单向的。