Да, это именно то, что мне было нужно. Я видел аннотацию раньше, но не знал, как она работает. Я действительно думал, что это будет игнорировать здания и площадку все время. Спасибо!

аюсь найти способ поменять @JsonBackRefence и @JsonManagedReference на основе того, на какую сущность я ссылаюсь из связанного репозитория.

Site.java

@Entity
@Table(name = "Site")
public class Site {

    @Id
    private String id;

    @OneToMany(mappedBy="site")
    @JsonManagedReference
    private List<Building> buildings;
}

Building.java

@Entity
@Table(name = "building")
public class Building{

    @Id
    private String id;

    @ManyToOne
    @JoinColumn(name = "SITE_ID")
    @JsonBackReference
    private Site site;
}

SiteRepository.java

public List<Site> findAll(); //Works as intended

BuildingRepository.java

public Building findById(buildingId); //Works if references are swapped

Однако при вызове findById (buildingId) я хочу поменять местами @JsonBackReference. Следовательно, @JsonBackReference находится в Site.java, а @JsonManagedReference - в объекте Building.java.

Примечание:@JsonIdentityInfo almosts обрабатывает его, но он дает мне слишком много информации, то есть: когда я вызываю findById (buildingId) из BuildingRepository, он дает мне все здания для сайта, присоединенного к найденному зданию.

 Abu Sulaiman11 дек. 2017 г., 16:08
Извините, пришлось подождать, пока я смог протестировать его на работе, чтобы я мог дать правильную обратную связь. Еще раз спасибо!
 Cepr011 дек. 2017 г., 11:53
Не забудьте принять / подтвердить ответы, которые помогли вам ...;)

Ответы на вопрос(1)

Решение Вопроса

Если я правильно вас понимаю,@JsonIgnoreProperties аннотация должна помочь вам:

@JsonIgnoreProperties("site")
@OneToMany(mappedBy="site")
private List<Building> buildings;

@JsonIgnoreProperties("buildings")
@ManyToOne
private Site site;
 Abu Sulaiman11 дек. 2017 г., 16:01
Да, это именно то, что мне было нужно. Я видел аннотацию раньше, но не знал, как она работает. Я действительно думал, что это будет игнорировать здания и площадку все время. Спасибо!

Ваш ответ на вопрос