当前位置: 首页 > 面试题库 >

如何根据引用哪个实体来交换@JsonBackReference和@JsonManagedReference

益泰平
2023-03-14
问题内容

我试图根据我从关联存储库引用的实体,找到一种交换@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
几乎可以处理它,但是它给了我太多信息,即:当我从BuildingRepository调用findById(buildingId)时,它为我提供了与找到的建筑物相连的站点的所有建筑物。


问题答案:

如果我对您的理解正确,那么@JsonIgnoreProperties注释应该可以帮助您:

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

@JsonIgnoreProperties("buildings")
@ManyToOne
private Site site;


 类似资料:
  • 问题内容: 我有两个实现和的接口。我想创建一个实例。具体实现是应该由用户选择还是应由用户进行选择。我尚未设计用户界面,因此没有限制用户如何进行此选择。 我知道有以下几种选择: 抽象工厂模式的用法 使用反射根据给定的类名创建实例 使用反射根据给定的类对象创建实例 这些选项的优缺点是什么? 请注意,尽管有几种类似的问题在讨论一种方法或另一种方法,但我没有找到一个比较。 问题答案: tl; dr 我建议

  • 我有两个表--例如TableA和TableB,其中有一些数据,如本文所定义的--如何基于not条件连接两个表的结果 现在我计划为两个表创建Hibernate实体,并且这些实体彼此不相关。 现在我想要得到基于NOT条件的结果,就像我前面提到的文章中给出的那样。 结果是使用SQL查询: 现在如何为这样的场景创建HQL查询或条件查询。我已经阅读了HQL&Criteria查询的Hibernate文档,但我

  • 我有MyEntity类: 在@RestController中有2个@GetMapping方法。第一个: 第二个: 需要提供: 1.@GetMap返回MyEntity类中描述的实体。 2.@GetMap("url")返回实体,就像它的一个字段带有@JsonIgnore一样。 更新: 例如,当我返回我的实体时,客户端将得到: 我想在同一时间使用相同的ENTITY有机会根据URL发送给客户端: 1. 2

  • 问题内容: 所以,我有两个实体引用对方,。 如果已删除,则必须将其删除,但在仍有引用的情况下不能删除。 这是我得到的两个约束: 我现在要删除一个(和相应的)… 呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜… 是的,我正在尝试删除的血腥条目引用了它… (我知道这是因为上有一个唯一的约束) 看起来如果我将fk设置为,我可以删除该条目,但是这似乎并不是我呼吸的那个家伙想要的,这就是“如果您删除了它,也删除了

  • 我已经创建了一个服务代理。 代理(请求类型为)和实际服务(请求类型。)之间有一个处理器。 进入< code > process(Exchange Exchange)方法的交换体属于< code>TypeA。 我能够使用下面的代码行访问数据 现在,我想将此信息更改为。 我使用下面的代码添加主体。 我得到了 现在,我想使用调用真正的服务,它来自。 我尝试进入处理器,但出现以下异常 真正的Web服务没有

  • 我有两个表两个表名