我有一个这样的 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 子类也有两者。感谢任何提示,当我错过任何最佳实践时,如果您再次让我走上正确的轨道,我会很高兴。