查询返回Spring Project中的子类

时间:2019-03-01 20:17:46

标签: spring hibernate jpa spring-data-jpa

我正在处理spring项目的映射类中的问题。 因此,每次我搜索基类时,结果都是所有基类记录和子类记录。

  

父母阶级

@Data
@Entity
@Table(name="parent")
@AttributeOverrides({
@AttributeOverride(name="id", column=@Column(name="ite_id"))
})
@EqualsAndHashCode(callSuper = true)
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@DiscriminatorValue("Parent")
public class Parent extends BaseEntity {

@OneToMany(cascade = CascadeType.ALL,
                fetch = FetchType.LAZY,
                mappedBy = "itens",targetEntity = Objeto.class)
    List<Objeto> objetos;


//Other fields here 


}
  

儿童班

@Data
@Entity
@Table(name="child")
@AttributeOverrides({
    @AttributeOverride(name="id", column=@Column(name="hom_id"))
})
@EqualsAndHashCode(callSuper = true)
@Polymorphism(type = PolymorphismType.EXPLICIT)
public class Child extends Parent {

@Column(name="hom_tds")
@Size(max=20)
String numeroTDS;
}

我一直在超类中查询结果,结果始终返回子类。 因此,我也尝试了Inhereted.Joined,结果相同。我查看了文档,并看到了一些有关“显式多态性”注释的内容。但是问题仍然存在。我通过执行本机查询(例如select * from item

)来部分解决此问题

查询调用:

@Override
@Transactional(readOnly = true)
public List<Parent> findaAll() {
    return repository.findAll();
}
classe ParentRepository

@Query("select itens from Parent itens")
 public List<Parent> findAll() ;

我在https://www.baeldung.com/hibernate-inheritance网站上找到了一些解释: 实体继承意味着在查询超类时,我们可以使用多态查询来检索所有子类实体。

0 个答案:

没有答案