当前位置: 首页 > 知识库问答 >
问题:

如何在Spring boot rest中修改具有@manytone关系的对象

燕扬
2023-03-14

这是我的地区类:

    @Entity(name = "REGION")

public class Region {

    private Long id;
    private String region;

    @OneToMany(targetEntity = Compagnie.class, mappedBy = "region", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    private Set<Compagnie> compagnie;

这是我的Compagnie类:

@Entity(name = "COMPAGNIE")
public class Compagnie {

    private Long id;
    private String compagnie;

    @ManyToOne
    @JoinColumn(name = "REGION_ID")
    private Region region;

这是我在控制器类中的编辑方法:

@RequestMapping(value = "/compagnie/{id}", method = RequestMethod.GET)
public ResponseEntity<?> getCompagnie(@PathVariable("id") long id) {
    logger.info("Fetching Compagnie with id {}", id);
    Compagnie compagnie = compagnieRepository.findOne(id);
    if (compagnie == null) {
        logger.error("Compagnie with id {} not found.", id);
        return new ResponseEntity(new CustomErrorType("Unable to update. Compagnie with id " + id + " not found."),
                HttpStatus.NOT_FOUND);
    }
    return new ResponseEntity<Compagnie>(compagnie, HttpStatus.OK);
}

我用于测试的json是:

{"compagnie":"test compagnie 1","区域":{"id": 1,"区域":"区域1"}}

公司改变了,但区域不会改变,我无法从@requestBody读取区域属性。

我真的需要你的帮助。谢谢。

共有1个答案

仉峻
2023-03-14

在这种情况下,您的持久性提供程序默认不会获取区域

定义实体上的实体图详细信息:

@Entity(name = "COMPAGNIE")
@NamedEntityGraph(name = "Compagnie.region",
  attributeNodes = @NamedAttributeNode("region"))
public class Compagnie {

然后覆盖jpa存储库界面中findOne方法的定义:

public interface CompagnieRepository extends JpaRepository<Compagnie, String> {

    @EntityGraph("Compagnie.region")
    Compagnie findOne(Long id);
}

现在将急切地获取依赖项,并且区域数据应该出现在响应体中。

 类似资料:
  • 我在Laravel5.3中遇到了一个问题,我查看了文档,也搜索了web,但没有找到任何内容。 我使用Laravel关系连接两个表。现在,我希望在用户提交表单后,同时在两个表上插入数据。这里的问题是第一个表是主要的一个说“用户”,第二个说“xyz”属于第一个表。表"xyz"包含连接两个表的"users_id"列。而显然“users_id”是“用户”表的“id”列。 现在问题来了,我想插入数据在用户表

  • 问题内容: 假设我有两个表:Store和Product。我希望我的商店有产品清单。我怎样才能做到这一点? 我开始这样的事情,但是我不知道该如何完成,你们能帮我吗? 问题答案: 多对一(产品只能有一家商店) 多对多(产品可以在许多商店中使用)

  • 我正在尝试修改哈希映射。“value”是由逗号分隔的值组成的单个字符串。(例如:“aid=abc,bid=def,cid=gh2”) 我需要用DB中的相应值替换它们中的特定值。(例如,将bid更改为123,这将导致上述“值”字符串为:“aid=abc,bid=123,cid=gh2”) 然后将修改后的“value”设置为相应的键,以便hashmap由修改后的值组成。 我尝试遍历键,并使用将给出值的

  • 我目前在这段关系中遇到了问题,我已经尝试了我在互联网上看到的一切。尽管如此,我还是得到了这个错误:error:column roles0\u0。用户id不存在。 我有一个具有Spring Security性的启动应用程序,我需要使用PostgreSQL数据库中的用户登录。 但我就是无法让用户和角色之间的关系发挥作用。 以下是实体类: 数据库看起来很好,我看了列名等。我不知道该怎么做才能消除这个错误

  • 假设我有一个项集合,例如,我需要检查是否有任何项从包装类中被修改,例如,任何项的属性的值通过setter被更改: 或者另一个问题,选择的答案建议使用标记,每次修改属性时都需要升起该标记。然而,我的类实际上会变得更脏,矛盾的是,我需要修改几十个修改Item属性的方法。 有没有其他方法,最好是透明的?

  • 在Enterprise Architect中开发扩展时,可以调用Repository.openDiagram()函数并打开特定的关系图。使用diagram.SelectedObjects,可以选择该关系图上的对象,并且可以访问所选对象的列表。然而,在那里我需要专注于一个选定的对象,却找不到相应的EA API/函数。 提前感谢任何提示!