2014-09-16 2 views
6

comme dans le titre - mon @RestResource (exporté = false) est ignoré dans le champ. reste de données de printemps veulent toujours faire JSON, je voudrais simplement sauter pour l'instant, que le changement rel dans WorkflowEvent ne m'a rien donné ..@RestResource (exported = false) ignoré

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "submission") 
@OrderBy("date desc") 
@RestResource(exported = false) 
private List<WorkflowEvent> events = new ArrayList<WorkflowEvent>(); 

Je reçois:

{"timestamp":1410850806347,"status":500,"error":"Internal Server Error","exception":"org.springframework.http.converter.HttpMessageNotWritableException","message":"Could not write JSON: Detected multiple association links with same relation type! Disambiguate association @javax.persistence.JoinColumn(insertable=true, unique=false, referencedColumnName=, columnDefinition=, name=submission_id, updatable=true, nullable=true, table=, [email protected](name=, value=CONSTRAINT, foreignKeyDefinition=)) @javax.persistence.ManyToOne(fetch=EAGER, cascade=[], optional=true, targetEntity=void) @org.springframework.data.rest.core.annotation.RestResource([email protected]iption(value=), path=, exported=false, rel=) private mypackage.MyClass mypackage.WorkflowEvent.myclass using @RestResource!; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Detected multiple association links with same relation* 

ofcourse il fonctionne quand je commente ce champ.

Mes versions:

\- org.springframework.data:spring-data-rest-webmvc:jar:2.1.4.RELEASE:compile 
[INFO] |  \- org.springframework.data:spring-data-rest-core:jar:2.1.4.RELEASE:compile 
[INFO] |  +- org.springframework.hateoas:spring-hateoas:jar:0.16.0.RELEASE:compile 

Répondre

11

@RestResources est pris en charge uniquement sur les propriétés de domaine qui pointent vers des ressources gérées. Ainsi, si vous n'exposez pas WorkflowEvent à un référentiel géré Spring Data REST, l'annotation n'a aucun effet. Dans ce cas, utilisez simplement @JsonIgnore pour laisser Jackson ne pas afficher la propriété.

+0

Même lorsqu'il dispose d'un référentiel, @RestResource (exporté = false) sur la propriété WorkflowEvent d'une autre entité n'a aucun effet. Si je supprime le référentiel, il essaie toujours de créer un lien vers l'entité WorkflowEvent .. Il se bloque avec "Liens d'association multiples détectés" sur mypackage.WorkflowEvent.submission – freakman

+0

Cela semble être très impliqué. Y a-t-il une chance que vous fournissiez un exemple de projet? –

+0

semble que ne pas avoir de dépôt pour l'une des propriétés provoque cela (j'en ai supprimé un pour WorkflowEvent maintenant pour le reproduire). Si c'est là - tout est ok - les liens sont générés et fonctionnent bien. Oliver - s'il n'y a pas de raison rationnelle pour cela, je vais essayer de créer un petit projet avec ce problème. – freakman