spring-projects / spring-projects/spring-data-rest
Disable generation of related objects inside _embedded property during using projections [DATAREST-567]
Open
@odrotbohm is already working on this.
Since Dec 31, 2020.
type: bug
- Dominant language
- Java
- Stars
- 958
- Forks
- 568
- PR merge metrics
- No merged PRs in 30d
Description
Victor Mosin opened DATAREST-567 and commented
public class User {
private Long id;
private String name;
@OneToOne(mappedBy = "user")
private Logo logo;
@ManyToOne(optional = true)
private Business business;
}
public class Logo {
@OneToOne(optional = false)
private User user;
private String path;
}
@RepositoryRestResource(excerptProjection = UserInlineAvatarProjection.class)
public interface UserRepository extends JpaRepository<User, Long> { .. }
@Projection(name = "inlineAvatar", types = { UserModel.class })
public interface UserInlineAvatarProjection extends VersionedProjection {
Long getId();
String getName();
Logo getLogo();
}
The output JSON looks like:
{
"id": 1,
"name": "John',
"logo": {
"path": "path/to/image"
},
"_embedded": {
"logo": {
"path": "path/to/image"
},
"business": {
!!!
}
},
"_links": {
"self": "http://..."
}
}
As you can see I use the projection (as a projection itself and also as an excerp) that hasn't any business field inside, but the result still has it inside _embedded property.. Is it normal behavior??
Once I use projections, I do not need any nested embedded objects
Affects: 2.3 GA (Fowler)
Reference URL: http://stackoverflow.com/questions/30704879/remove-nested-embedded-fields-while-using-projections
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.