java showoptiondialog einzelner benutzerdefinierter Serializer für alle eingebetteten annotierten Objekte, die sie durch ihre IDs ersetzen



joptionpane showoptiondialog (1)

Sie müssen @JsonIdentityReference(alwaysAsId = true) für die Kategorievariable verwenden.

Z.B:

@Entity
public Product {
   @Id
   public int id;

   public String name;

   @ManyToOne(cascade = {CascadeType.DETACH} )
   @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id", scope=Category.class)
   @JsonIdentityReference(alwaysAsId = true)
   Category category;

   @ManyToMany(cascade = {CascadeType.DETACH} )
   Set<Category> secondaryCategories;


}

Ich habe Entitäten wie diese:

@Entity
public Product {
   @Id
   public int id;

   public String name;

   @ManyToOne(cascade = {CascadeType.DETACH} )
   Category category

   @ManyToMany(cascade = {CascadeType.DETACH} )
   Set<Category> secondaryCategories;


}

und

@Entity
public Category {
   @Id
   public int id;

   public String name;

    @JsonCreator
    public Category(int id) {
        this.id = id;
    }

    public Category() {}
}

ist es möglich, entweder nur die Category class oder die category und secondaryCategories mit einer Annotation annotieren, die sie serialisieren, um nur ihre IDs zu sein, wenn sie eingebettet sind.

gerade bekomme ich vom Server, wenn ich ein GET für Produkt mit id = 1 mache:

{ 
  id: 1,
  name: "product 1", 
  category: {id: 2, name: "category 2" }, 
  secondaryCategories: [{id: 3, name: "category 3" }, 
                        {id: 4, name: "category 4" }, 
                        {id: 5, name: "category 5" }] 
}

Ist es möglich zurück zu kommen?

{ 
  id: 1,
  name: "product 1", 
  category: 2, 
  secondaryCategories: [3, 4, 5]
}

Die Annotating Category Klasse mit @JsonIdentityReference(alwaysAsId = true) funktioniert im Allgemeinen, gibt aber auch nur IDs zurück, wenn ich eine oder eine Liste von Kategorien abrufe. Ich brauche ID-Konvertierung nur, wenn die Kategorie eingebettet ist.

Vielen Dank!





spring-data