2014-01-24 43 views
0

这是一个基于Oliver Gierke的suggestion的后续问题。泛型和弹簧数据JPARepository

我们有两个表(几乎相同的信息),但由于某些外部原因,不能使用普通的单个表。我收到一个错误,说明基类不是映射实体。 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'类获得'Non-Managed Entity'。 我试过继承类型 - 'TABLE_PER_CLASS

回答

1

这不受Spring数据JPA和Java持久性API规范的支持。

  • 春数据JPA问题DATAJPA-264

    库:在启动时抛出异常,如果实体是不是一个@Entity(如@MappedSuperclass)

    Status: Investigating 
    Resolution: Unresolved 
    
  • JPA specifications说:

    映射超,不像一个实体,不可查询,并且必须不被作为参数传递到 EntityManagerQuery操作。映射超类定义的持久关系必须是单向的。

+1

感谢您的信息。我正在使用Hibernate。我试图实现一种工厂方法类型(如我在共享的链接中),并最终使用JpaRepository 。 – patb23