开发者社区> 问答> 正文

使用父级从子级存储库中选择

我有一个实体:

@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table
@DiscriminatorValue("APPEALS")
public class Appeals extends EntityAbstract {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Type(type = "jsonb")
    @Column(name = "content", columnDefinition = "jsonb")
    private String content;

    @Column(name = "guid")
    private String guid;
}

@Getter
@Setter
@Entity
@Table(name = "entity_parent")
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "DISCRIMINATOR", discriminatorType = DiscriminatorType.STRING)
//@MappedSuperclass
@TypeDefs({@TypeDef(name = "jsonb", typeClass = JsonBinaryType.class)})
public abstract class EntityAbstract implements Content {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Version
    private Integer version;
}

public interface Content {
    String getContent();
    void setContent(String content);
}

我使用Spring Data来处理这个问题。我需要从子表(即APPEALS)中进行选择。我这样做是这样,但它不能那样工作:

public interface EntityRepository extends JpaRepository<EntityAbstract, Long> {
    @Query("SELECT e FROM EntityAbstract e WHERE TYPE(e) = ?1 AND e.guid = ?2")
    <E extends EntityAbstract> E findByContent(final Class<E> e, String content);
}

之后,我将需要使用标准PostgreSql功能在Content字段上进行选择,以搜索jsonb之类的字段。如何在不将content和guid字段传输到AbstractEntity的情况下实现所有这些?

展开
收起
几许相思几点泪 2019-12-15 21:35:02 940 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载