Я занимаюсь проблемами на уроках картирования моего весеннего Проекта.Поэтому каждый раз, когда я выполняю поиск в базовом классе, результатом были все записи базового класса и записи подклассов.
Родительский класс
@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: EntityНаследование означает, что мы можем использовать полиморфные запросы для извлечения всех сущностей подкласса при запросе суперкласса.