我有一个像这样的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返回cider或beer AND状态和所有者。相反,它只返回苹果酒或啤酒 - 子类的属性。
我的推理是否只是一个错误,或者我完全错过了什么?
这是我的BarRepository:
public interface BarRepository extends JpaRepository<Bar, Long> {
}
这就是我的BarService中的findAll()被“实现”的方式:
@Inject
private BarRepository barRepository;
public Iterable<Bar> findAll() {
return barRepository.findAll();
}
我也有我的Blub子类。任何提示都会受到赞赏,当我错过任何最佳练习时,如果你再次把我放在正确的轨道上,我会很高兴。