Problema: una relazione One-to-Many bidirezionale di Hibernate non è facilmente associabile a JSON. Se viene utilizzata la mappatura predefinita (Jackson), esiste un problema di ricorsione infinito in quanto il genitore contiene i figli, ognuno dei quali contiene un riferimento al genitore. Il modo più semplice che ho trovato per risolvere questo problema è contrassegnare l'attributo Many end come @JsonIgnore. Ciò significa che il JSON viene generato come previsto. Tuttavia, quando gli oggetti vengono inviati su un POST REST (ad esempio), ciò significa che i riferimenti ManyToOne vengono persi. Al momento ho solo il servizio REST per ricostruire i riferimenti prima di mantenere i dati, ma mi chiedo se c'è un modo consigliato per farlo automaticamente (usando l'architettura Spring REST).
Per illustrare, ecco alcuni frammenti di codice:
L'entità padre:
@Entity
@Table(name = "wine_case")
public class WineCase {
    @Id @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "wineCase")
    private List<CaseContent> caseContents;
}
L'entità figlio:
@Entity
@Table(name = "case_content")
public class CaseContent {
    @Id @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "wine_case_id", nullable = false)
    @JsonIgnore
    private WineCase wineCase;
}
Il metodo nel controller REST che riceve la richiesta e deve ricostruire le relazioni da CaseContent a WineCase:
@RequestMapping(method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public @ResponseBody
WineCase createWineCase(@RequestBody WineCase wineCase, HttpServletResponse response) {
    wineCase.setId(null);
    wineCase.getCaseContents().forEach((cc) -> cc.setWineCase(wineCase));
    entityManager.persist(wineCase);
    response.setHeader("Location", "/winecases/" + wineCase.getId());
    return wineCase;
}