Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring Data Serialization of Embeddable with ManyToOne References

I have an interesting problem. My data-model is the following:

Type A:

@Entity
@JsonIgnoreProperties(ignoreUnknown = true)
public class A {
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;
}

Type B:

@Entity
@JsonIgnoreProperties(ignoreUnknown = true)
public class B {
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;
}

Embeddable C:

@Embeddable
@JsonIgnoreProperties(ignoreUnknown = true)
public class C {
  @ManyToOne
  private A a;
  @ManyToOne
  private B b;
}

And Type D:

@Entity
@JsonIgnoreProperties(ignoreUnknown = true)
public class D {
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id;

  @ElementCollection
  @OrderColumn(name = "ORDER_INDEX")
  @CollectionTable(
    name = "d_c_join",
    joinColumns = @JoinColumn(name = "d_id")
  )
  private List<C> listOfC;
}

Deserialization (and storing) the entities works fine. When an object of class D is serialized the following is the outcome:

{
  "_embedded" : {
    "ds" : [ {
      "id" : 1,
      "listOfC" : [ { }, { } ],
      "_links" : {
        "self" : {
          "href" : "http://localhost:8000/ds/1"
        }
      }
    } ]
  }
}

How can I configure Spring-Data to serialize A and B in C (best would be by their URI).

like image 722
Benny Avatar asked Oct 13 '15 16:10

Benny


1 Answers

I'm pretty positive what you're looking for are Projections. I don't think Spring will serialize referenced collections without it.

See my answer here for more details: Spring Data-Rest POST to sub-resource

like image 113
Nestor Ledon Avatar answered Oct 25 '22 18:10

Nestor Ledon