JPARepository对@MappedSuperClass的基类的findAll查询只返回baseclass的条目

时间:2013-02-11 08:12:16

标签: java hibernate jpa

我有一个像这样的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子类。任何提示都会受到赞赏,当我错过任何最佳练习时,如果你再次把我放在正确的轨道上,我会很高兴。

0 个答案:

没有答案