Ich möchte alle Datensätze erhalten, die von meiner abstrakten Klasse ausgehen. Ich habe folgendes:Wie gibt man mehrere Klassen zurück, die die Klasse vom Repository erweitern?
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;
}
Und ProductRepository.java
public interface ProductRepository extends CrudRepository<Product, Long> {
<T extends Product>List<T> findAll(); // not working
}
In meinem Controller habe ich:
@RequestMapping(value = "/product", method = GET)
public <T extends Product>List<T> findProducts(){
return productRepository.findAll();
}
Wie kann ich die findAll()
Rückkehr alle Elemente aus den Unterklassen machen die Product
Klasse erweitern?
UPDATE:
Ich habe die folgende Methode der ProductRepository hinzugefügt:
<T extends Product>List<T> findProducts();
und änderte es in der Steuerung - ist dies der richtige Weg, es zu tun?
Der Fehler, dass ich diese verwendet haben, ist:
Caused by:
org.springframework.data.mapping.PropertyReferenceException: No
property findProducts found for type Product!
Warum soll ich Tabellennamen verwenden? Ich benutze die TABLE_PER_CLASS-Strategie ... – uksz
Oh, tut mir leid, dass ich das gelesen habe. Aber sollten Sie dann nicht die '@ SecondaryTable' Annotation verwenden? Werfen Sie einen Blick auf http://stackoverflow.com/q/3915026/6505091 – kaba713