使用Spring Data JPA按类型查询

8

我有一个抽象类:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class A {
  ...
}

还有一些扩展类,比如:

@Entity
public class B extends A {
  ...
}

我也有第三个实体:
@Entity
public class C  {

  @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
  private A objectA;
  ...
}

问题是,我如何在C实体仓库中构建Spring Data JPA finder,以查询仅具有所需类型的A扩展对象?


为您的鉴别器添加只读属性,或尝试使用 select s from Sample s where TYPE(s) = :type - MariuszS
可能是重复的问题:Java / JPA | 使用指定继承类型查询 - MariuszS
我首先询问了关于spring-data的事情,其次我需要查询不是类型(c),而是类型(c.objectA)。 - Jakub Kubrynski
1个回答

11
你可以使用你定义的鉴别器值 "type" 的名称。
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING)
@Table(name = "abc")
public abstract class Abc {
....

-------------------------------------------

@Query("select a from Abc a where type = ?1")
List<Abc> findByType(String typeValue);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接