serializador personalizado único para todos los objetos anotados incrustados que los reemplaza con sus identificadores
Tengo entidades como esas:
@Entity
public Product {
@Id
public int id;
public String name;
@ManyToOne(cascade = {CascadeType.DETACH} )
Category category
@ManyToMany(cascade = {CascadeType.DETACH} )
Set<Category> secondaryCategories;
}
y
@Entity
public Category {
@Id
public int id;
public String name;
@JsonCreator
public Category(int id) {
this.id = id;
}
public Category() {}
}
¿es posible anotar ya sea soloCategory
clase ocategory
ysecondaryCategories
propiedades con una anotación que los serializará para que sean solo sus identificadores cuando estén incrustados.
ahora mismo obtengo del servidor cuando hago un GET para un producto con id = 1:
{
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" }]
}
¿Es posible volver:
{
id: 1,
name: "product 1",
category: 2,
secondaryCategories: [3, 4, 5]
}
AnotarCategory
clase con@JsonIdentityReference(alwaysAsId = true)
funciona en general, pero también devuelve solo identificadores cuando busco una o una lista de Categorías. Necesito conversión de identificación solo cuando la Categoría está incrustada.
¡Gracias!