2015-04-26 6 views
6

Pracuję nad udostępnieniem moich repozytoriów danych wiosennych za pomocą SDR. Kiedy przejść do mego odpoczynku URL (http://localhost:8080/trxes), pojawia się błąd: { „przyczyna”: null, „message”: „PersistentEntity nie musi być null!”}Błąd Spring Data Rest (SDR): PersistentEntity nie może mieć wartości null

Przy bliższym zbadaniu źródła danych wiosennej widzę, że metoda getRepositoryFactoryInfoFor() zwraca pusty repozytorium informacji tj

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; 
} 

prawdopodobną przyczyną mój problem jest, że moje uporczywe podmioty dziedziczyć z jednej klasy bazowej, a ja jestem przy użyciu pojedynczej tabeli strategię następująco :

istnieje tabela TRX w bazie danych z matą ching Trx Class. VariableIncome, VariableExpense, FixedIncome i FixedExpense all dziedziczą z Trx i przechodzą do tabeli TRX.

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

Wszystkie podklasy wyglądać podobnie do VariableIncome pokazano poniżej:

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

Moje repozytorium konfiguracja jest (brak adnotacji o tej klasie):

public interface TrxRepository extends CrudRepository<Trx, Long> { 

biegnę opisanej konfiguracji za pomocą:

@SpringBootApplication 
public class RestApplication { 

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

} 

Zgaduję, czego szukam, czy jest jakiś sposób poinformowania SDR (kiedy próbuje wywnioskować, co są moje trwałe klasy), że wszystkie podklasy powinny odwzorować z powrotem na Trx?

Odpowiedz

1

To jest problem po stronie "REST", a mniej po stronie "DATA".

Musisz użyć adnotacji Jacksona, aby uzyskać informacje o typie.

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

Można znaleźć więcej here, ponieważ istnieje kilka sposobów, aby zorganizować to w zależności od przypadku i preferencji użytkowania.

+0

Poddałem się i postanowiłem najpierw pobrać dane z repozytorium, a następnie "ręcznie" przekonwertować je do JSON. –

+0

czy otrzymałeś jakieś rozwiązanie? jeśli tak, opublikuj na: http: //stackoverflow.com/questions/33538426/spring-data-rest-sdr-bug-persistent-entity-must-not-be-null –