J'ai une entité appelée contentPath, avec peut avoir un parent du même type, et fils du même type, représenté avec quelque chose comme:données Spring Rest Beaucoup de beaucoup la cartographie de projection d'arbres
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "NAME", length = 50)
@NotNull
private String name;
@Column(name = "DESCRIPTION")
private String description;
@ManyToOne
@JoinColumn(name="CONTENT_PATH_ID")
public ContentPath contentPath;
@OneToMany(mappedBy="contentPath")
public Set<ContentPath> contentPaths;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "ACTIVITY_CONTENT_PATH",
joinColumns = {@JoinColumn(name = "CONTENT_PATH_ID", referencedColumnName = "ID")},
inverseJoinColumns = {@JoinColumn(name = "ACTIVITY_ID", referencedColumnName = "ID")})
private Set<Activity> activities;
Je mon ContentPathRepository, qui l'expose comme une API.
@RepositoryRestResource(collectionResourceRel = "contentPaths", path = "contentPaths", excerptProjection = ContentPathProjection.class)
public interface ContentPathRestRepository extends PagingAndSortingRepository<ContentPath, Long> {
}
et ma projection, qui devrait formater correctement mon objet.
@Projection(name = "contentPathProjection", types = ContentPath.class)
public interface ContentPathProjection {
Long getId();
String getName();
Set<ContentPath> getContentPaths();
}
Je comptais obtenir une liste des ContentPaths, qui ont leurs ContentPaths à l'intérieur, et je me suis succès, mais il n'apporte pas les ID, il apporte nom et la description seulement, et il est très bizarre parce que mon la projection n'a pas la description.
réponse actuelle:
"name": "BOOK 1",
"id": 1,
"contentPaths": [
{
"name": "UNIT 1",
"description": "UNIT 1 description"
},
{
"name": "UNIT 2",
"description": "UNIT 2 description"
}
]
Pourquoi cela se produit? Comment le réparer?
vous avez getter public 'ContentPath.id'? –
Oui. 'public Long getId() {return id;}' Mais la chose étrange est aussi de retourner une description, mais je n'ai pas de description dans ma projection. –
Et il retourne aussi l'ID pour le premier niveau, mais pas pour le second. –