1
抽象クラスから継承したすべてのレコードを受け取ることを希望します。私は、次のしている:リポジトリからクラスを継承して複数のクラスを返す方法は?
Product.java
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@DiscriminatorColumn(name="descriminatorColumn")
@Table(name="ProductCatalog")
public abstract class Product {
@Id
private Long id;
}
PC.java
@Entity
@Table(name = "PC")
public class PC extends Product{
private String pcType;
}
TV.java
@Entity
@Table(name = "TV")
public class TV extends Product{
private String tvType;
}
そしてProductRepository.java私が持っている私のコントローラで
public interface ProductRepository extends CrudRepository<Product, Long> {
<T extends Product>List<T> findAll(); // not working
}
:
@RequestMapping(value = "/product", method = GET)
public <T extends Product>List<T> findProducts(){
return productRepository.findAll();
}
がどのように私はfindAll()
クラスProduct
を拡張するサブクラスからのすべてのアイテムを返すことができますか?
UPDATE:
私はProductRepositoryに次のメソッドを追加しました:
<T extends Product>List<T> findProducts();
とコントローラでそれを変更する - これはそれを行うための適切な方法は何ですか?私はこれを使用してきた
エラーは次のとおりです。
Caused by:
org.springframework.data.mapping.PropertyReferenceException: No
property findProducts found for type Product!
なぜ私はテーブル名を使用しませんか?私はTABLE_PER_CLASS戦略を使用しています... – uksz
ああ、私はそれを読んですみません。しかし、 '@ SecondaryTable'アノテーションを使用するべきではありませんか? http://stackoverflow.com/q/3915026/6505091をご覧ください – kaba713