Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot Spring Boot、Hibernate、JPA中的@ManyToOne关系存在问题_Spring Boot_Hibernate_Jpa_H2 - Fatal编程技术网

Spring boot Spring Boot、Hibernate、JPA中的@ManyToOne关系存在问题

Spring boot Spring Boot、Hibernate、JPA中的@ManyToOne关系存在问题,spring-boot,hibernate,jpa,h2,Spring Boot,Hibernate,Jpa,H2,我有课程->乡村和城市 我想创建一个工作请求,当我调用获取所有国家时,我将获取所有国家和城市 当我调用获取所有城市时,我将从Country model获取所有仅包含国家/地区的城市 我想添加与国家相关的新城市 我的国家模型课: @GeneratedValue(strategy = GenerationType.IDENTITY) @Id private Long id; @NotEmpty(message = "Name of country is mandatory."

我有课程->乡村和城市

  • 我想创建一个工作请求,当我调用获取所有国家时,我将获取所有国家和城市
  • 当我调用获取所有城市时,我将从Country model获取所有仅包含国家/地区的城市
  • 我想添加与国家相关的新城市
  • 我的国家模型课:

      @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Id
    private Long id;
    
    @NotEmpty(message = "Name of country is mandatory.")
    @Column(unique = true)
    private String nameOfCountry;
    
    @NotBlank(message = "Name of capital is mandatory.")
    private String capital;
    
    @Max(value = 17098242L, message = "Maximum value for population = 10000000000")
    private Long surface;
    
    private String countryCode;
    
    private String telephoneCode;
    
    @OneToMany(cascade = CascadeType.PERSIST)
    @JoinColumn(name = "country_Id", updatable = false, insertable = false)
    private List<CityModelDao> cityModelDao;
    
        @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Id
    private Long id;
    
    @NotEmpty(message = "Name of country is mandatory.")
    @NotNull
    @Column(nullable = false, unique = true)
    private String nameOfCity;
    
    我知道我在这里没有@manytone,但我仍然做得不对,现在我没有更多的想法

    我的答复来自get国家:

    这就是我想要的

    但当我打电话询问城市时,我的回答是:

    不幸的是,我还没有得到关于这个国家的信息

    在db中,我从国家/地区获得了关于fk的城市信息:

    你能帮我做些工作吗?我试过这样的方法:

    城市模型:

        @ManyToOne()
    @JoinColumn(name = "country_Id")
    private CountryModelDao countryId;
    
    CountryModel:

        @OneToMany(mappedBy = "countryId", orphanRemoval = true, cascade = CascadeType.PERSIST)
    private List<CityModelDao> cityModelDao;
    
    @OneToMany(mappedBy=“countryId”,orphanRemoving=true,cascade=CascadeType.PERSIST)
    私有列表城市模型;
    
    但这是错误的。当我尝试上面的关系城市时,我得到了错误

    你能告诉我在这种情况下如何纠正@ManyToOne吗?我做错了什么


    谢谢

    最简单的双向一对一关系模型应该是:

    @OneToMany(mappedBy = "countryId")
    private List<CityModelDao> cityModelDao;
    
    您将根据将在CityModelDao表中的列country_id上执行的联接操作填充数据

    当然,之后,您可以使用孤立删除、级联类型等来丰富注释

    LE: 您正在通过REST使用此功能,需要避免无限循环

    请将关系更新到:

    @JsonManagedReference
    @OneToMany(mappedBy = "countryId")
    private List<CityModelDao> cityModelDao;
    

    最简单的双向一方关系模型应该是:

    @OneToMany(mappedBy = "countryId")
    private List<CityModelDao> cityModelDao;
    
    您将根据将在CityModelDao表中的列country_id上执行的联接操作填充数据

    当然,之后,您可以使用孤立删除、级联类型等来丰富注释

    LE: 您正在通过REST使用此功能,需要避免无限循环

    请将关系更新到:

    @JsonManagedReference
    @OneToMany(mappedBy = "countryId")
    private List<CityModelDao> cityModelDao;
    

    我为上面的代码添加了响应,因为它太长,无法添加到注释中。我更新了我的答案,这样你就可以避免无限循环。你帮了我很多。谢谢但最后一件事。当我添加新城市时,这个城市有空值:3 wroclaw2 null。有没有可能现在国家ID将与国家ID相同?好的,我知道了。谢谢!我为上面的代码添加了响应,因为它太长,无法添加到注释中。我更新了我的答案,这样你就可以避免无限循环。你帮了我很多。谢谢但最后一件事。当我添加新城市时,这个城市有空值:3 wroclaw2 null。有没有可能现在国家ID将与国家ID相同?好的,我知道了。谢谢!