2015-04-26 17 views
6

Ich arbeite daran, meine Feder Data Repositories über SDR verfügbar zu machen. Wenn ich meine Ruhe url (http://localhost:8080/trxes) navigieren, bekomme ich einen Fehler: { „Ursache“: null, „message“: „PersistentEntity nicht null sein muss!“}Spring Data Rest (SDR) -Fehler: PersistentEntity darf nicht null sein

Bei näherer Betrachtung der Feder Datenquelle siehe, ich, dass der getRepositoryFactoryInfoFor() -Methode leere Repository-Informationen gibt also

private RepositoryFactoryInformation<Object, Serializable> getRepositoryFactoryInfoFor(Class<?> domainClass) { 

    Assert.notNull(domainClass, "Domain class must not be null!"); 

    RepositoryFactoryInformation<Object, Serializable> repositoryInfo = repositoryFactoryInfos.get(ClassUtils 
      .getUserClass(domainClass)); 
    return repositoryInfo == null ? EMPTY_REPOSITORY_FACTORY_INFO : repositoryInfo; 
} 

der wahrscheinlichen Grund für mein Problem ist, dass meine persistenten Entitäten von einer einzigen Basisklasse erben, und ich bin eine einzelne Tabelle Strategie wie folgt :

Es gibt eine TRX-Tabelle in der Datenbank mit einer Matte Ching Trx Klasse. VariableIncome, VariableExpense, FixedIncome und FixedExpense erben alle von Trx und bleiben in der TRX-Tabelle erhalten.

@Entity 
    @Table(name = "TRX") 
    @Inheritance(strategy = InheritanceType.SINGLE_TABLE) 
    @DiscriminatorColumn(name = "TRX_TYPE", discriminatorType = DiscriminatorType.STRING) 
    abstract public class Trx extends AbstractPersistable<Long> { 

Alle Unterklassen ähneln festverzinsliche unten gezeigt:

@Entity 
    @DiscriminatorValue("VARIABLE_INCOME") 
    public class VariableIncome extends Trx { 

Mein Repository Setup ist (keine Anmerkungen zu dieser Klasse):

public interface TrxRepository extends CrudRepository<Trx, Long> { 

ich die beschriebene Setup ausgeführt werden:

@SpringBootApplication 
public class RestApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(RestApplication.class, args); 
    } 

} 

Ich denke, was ich suche, ist, ob es eine Möglichkeit gibt, SDR zu sagen (wenn es versucht, abzuleiten, was meine persistenten Klassen sind), dass alle Unterklassen zurück zu Trx mappen sollten?

Antwort

1

Dies ist ein Problem auf der Seite "REST" und weniger auf der Seite "DATA".

Sie müssen die Jackson Annotationen für Typinformationen verwenden.

@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include = As.PROPERTY, property = "@class") 

Sie können ein paar Möglichkeiten mehr here, da finden diese auf Ihren Anwendungsfall und Vorlieben zu strukturieren abhängig.

+0

Ich gab auf und entschloss mich, die Daten zuerst aus dem Repository zu holen und dann "manuell" in JSON zu konvertieren. –

+0

hast du irgendeine lösung bekommen? Wenn ja, posten Sie bitte unter: http://stackoverflow.com/questions/33538426/spring-data-rest-sdr-bug-persistent-entity-must-not-be-null –

Verwandte Themen