2014-05-20 15 views
11

In riferimento a: Primavera tecnica Versione 2.0.2 Restoprimavera dati REST - POST nuova entità con le relazioni

Sto cercando di pubblicare un entità (Address) con un @ManyToOne (invece di @OneToOne come nell'esempio) legame con la persona come spiegato in: Embedded Entity references in complex object graphs ma ottengo un errore di Jackson:

org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: (was java.lang.NullPointerException) (through reference chain: Address["person"]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: Address["person"]) 
at org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.readJavaType(MappingJackson2HttpMessageConverter.java:228) ~[spring-web-4.0.3.RELEASE.jar:4.0.3.RELEASE] 

trovo strano che io possa inviare un oggetto JSON con rel e href l'attributo "persona" di indirizzo come:

"person": { 
    "rel" : "people.Person", 
    "href" : "http://localhost:8080/people/1" 
} 

È ancora valido? La pagina di riferimento è piuttosto vecchia (2012). Ci sono documenti aggiornati. Ho rivisto il documento di riferimento anche per l'ultimo (fino ad oggi) 2.1.0 RC1, ma trovo che manchi.

Qualsiasi puntatore sarebbe apprezzato.

Stackoverflow mi ha suggerito di vedere this question, che, nel mio caso, non riesce con uno Stato HTTP 405 - Il metodo di richiesta 'POST' non è supportato ... che è probabilmente un problema di configurazione, ma la mia domanda originale è valida.

Update 1: Dalla sezione di riferimento Doc 4.1 si dice:

Sometimes the behavior of the Spring Data REST's ObjectMapper, which has been specially configured to use intelligent serializers that can turn domain objects into links and back again, may not handle your domain model correctly. There are so many ways one can structure your data that you may find your own domain model isn't being translated to JSON correctly. It's also sometimes not practical in these cases to try and support a complex domain model in a generic way. Sometimes, depending on the complexity, it's not even possible to offer a generic solution.

Il problema potrebbe essere che sto usando un custom Jackson ObjectMapper con il supporto Hibernate. Proverò a scavare ulteriormente.

Aggiornamento 2: Non importa aggiornare 1, ho rimosso Hibernate4Module e il comportamento è lo stesso.

+0

Si dovrebbe provare a circondare il {} con "" –

+0

@ShayElkayam ??? Ti piacerebbe elaborare ... – pakman

+0

hai configurato le tue annotazioni JPA come mostrato qui ?? [Java Persistence/ManyToOne] (http://en.wikibooks.org/wiki/Java_Persistence/ManyToOne) – GregoAvg

risposta

10

Il formato sulla pagina che hai collegato non era aggiornato. L'ho appena aggiornato. Il formato corretto è:

{ 
    "postalCode": "12345", 
    "province": "MO", 
    "lines": ["1 W 1st St."], 
    "city": "Univille", 
    "person": "http://localhost:8080/people/1" 
} 

Almeno, questo è ciò che funziona per me con le mie entità.

+0

Sto faticando per farlo funzionare (vedi [qui] (https://stackoverflow.com/questions/47377464/create-new-sub-resource-failed-to-evaluate-jackson-deserialization-for-type- org)). Mi sto perdendo qualcosa? – displayname

+0

Scusa @displayname - Non sto più usando Spring e tutto ciò che ho imparato è stato cancellato dalla memoria. : / – JBCP

Problemi correlati