2017-05-10 3 views
0

Ich arbeite gerade an einem Projekt mit Spring Boot.Verwenden von CrudRepository zum Abrufen einer DiskriminatorSpalte im Spring Boot

Eine der Tabellen mit arbeite ich ein DiscriminatorColumn verwendet, wie folgt aus:

@Entity 
@Table(name = "document_summary", uniqueConstraints = @UniqueConstraint(columnNames={"document_name", "document_type"})) 
@Inheritance(strategy = InheritanceType.SINGLE_TABLE) 
@DiscriminatorColumn(name = "document_type", discriminatorType = DiscriminatorType.STRING) 
public class DocumentSummary { 
    ... 
    //no document type field 
    ... 
} 

Wie Sie sehen können, auch wenn eine Spalte auf dem Tisch „document_type“ genannt wird, ist es nicht explizit als einzelnes Feld erstellt.

Normalerweise würde ich nur ein Repository wie folgt erstellen die Dokumentzusammenfassung aus dem databse abzurufen:

public interface DocumentSummaryRepository extends CrudRepository<DocumentSummary, Long> { 
    DocumentSummary findByDocumentType(String documentType); 
} 

In diesem Fall ist es eine Möglichkeit, Dokumentzusammenfassung zum Abrufen von Daten auf der Basis der Spalte document_type?

Danke.

Antwort

0

Versuchen findBy Methode in Ihrer Repository-Schnittstelle zu ändern:

public interface DocumentSummaryRepository extends CrudRepository<DocumentSummary, Long> { 
    DocumentSummary findByDocument__type(String documentType); 
} 

Verwenden Doppelstrich hier, weil Frühling es als ein reserviertes Zeichen behandelt: doc

1

Ich glaube nicht, dass dies der richtige Weg, dies zu tun ist .

einen Blick auf dieses Tutorial Nehmen: https://www.petrikainulainen.net/programming/spring-framework/spring-data-jpa-tutorial-part-two-crud/

die beiden Wege gehen durch, können Sie sehen, wie und welche Spalte in diesem Szenario zu nennen.

Auch im Abschnitt über falschen Weg, es zu tun, werden Sie auch sehen, dass:

  1. eine Basis-Schnittstelle erstellen, die die Repository-Schnittstelle erweitert und die gängigen Methoden zu dieser Schnittstelle hinzuzufügen.
  2. Erstellen Sie die eigentliche Repository-Schnittstelle, die unsere Basisschnittstelle erweitert.
Verwandte Themen