是否可以使用一个存储库在差异表中选择子类?

时间:2018-06-22 12:37:20

标签: java jpa spring-data-jpa jpa-2.0

我想使用一个存储库从差异表实体中进行选择。 我使用Spring Data JPA并拥有自己的查询方法:

@Query(value = "SELECT * FROM ?=1 WHERE ref_id=?2", nativeQuery = true)
BaseEntity findByRefId(String tableName, Long refId);

第一个问题是可以通过某种方式传递表名吗?因为现在我正在编码表名。

接下来,我有两个子类EntityOne和EntityTwo。它们的字段(列)与BaseEntity相同,但必须在不同的表中。

@MappedSuperclass // or @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) and @Entity    
BaseEntity
        |
        @Entity
        EntityOne
        |
        @Entity
        EntityTwo

我尝试对BaseEntity使用@MappedSuperclass注释。但这是行不通的,我有一个例外,必须将BaseEntity注释为@Entity。 另外,我尝试将BaseEntity注释为@Entity和@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS),但是我遇到了SQLException:找不到列'clazz_'。我什至没有该专栏。

1 个答案:

答案 0 :(得分:0)

从spring-docs https://docs.spring.io/spring-data/jpa/docs/1.5.0.RC1/reference/html/jpa.repositories.html

看例2.12

您可以使用SpEL这样做:

kwargs = {'group_id' : 123}
scheduler.add_job(...., kwargs=kwargs)