0

我有一个这样的 JPA MappedSuperClass:

@MappedSuperclass
public abstract class Foo extends AbstractPersistable<Long> {       
private Status status;
@ManyToOne(cascade=CascadeType.ALL)
private User owner;

以及继承自Foo的两个子类,分别定义如下:

@Entity
@Table(name="BARFOO")
@EqualsAndHashCode(callSuper=true)
@PrimaryKeyJoinColumn(name="id", referencedColumnName="id")
public @Data class Bar extends Foo {
  private String beer;

@Entity
@Table(name="BLUBFOO")
@EqualsAndHashCode(callSuper=true)
@PrimaryKeyJoinColumn(name="id", referencedColumnName="id")
public @Data class Blub extends Foo {
private String cider;

现在,当我将一些数据保存在 Bar 或 Blub 类型的 Object 中时,我希望 myRepository.findAll 实际上从 MappedSuperClass 返回苹果酒或啤酒以及状态和所有者。相反,它只返回苹果酒或啤酒——子类的属性。

我的推理是否有错误,或者我完全错过了什么?

这是我的 BarRepository:

public interface BarRepository extends JpaRepository<Bar, Long> { 
}

这就是我的 BarService 中的 findAll() 是如何“实现”的:

@Inject
private BarRepository barRepository;
public Iterable<Bar> findAll() {
  return barRepository.findAll();
}

我的 Blub 子类也有两者。感谢任何提示,当我错过任何最佳实践时,如果您再次让我走上正确的轨道,我会很高兴。

4

0 回答 0