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."
@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相同?好的,我知道了。谢谢!