0

次のような JPA MappedSuperClass があります。

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

そして、Foo から継承する 2 つのサブクラスは、次のように定義されます。

@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 のオブジェクトにデータを保存すると、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