大佬教程收集整理的这篇文章主要介绍了外键在一对多关系中始终为空-使用JPA的Spring Boot Data,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
您可以通过以下方式进行操作:
Country newCountry = new Country(country.getname());
ArrayList < Language > langList = new ArrayList<>();
for (Language lang : country.getLanguages()) {
langList.add( new Language(language.getname(), newCountry ) ) ;
}
newCountry.setLanguages( langList );
iCountryRepository.save(newCountry);
PS:不要忘记添加适当的构造函数。另外,如果要像这样进行构造函数重载,则必须添加默认构造函数:
public Country() {}
public Country(String Name) {this.name = name }
我有两个实体类,Country
并且Language
具有双向一对多关系。
以下是实体类:
@Entity
@Table(name = "COUNTRY")
public class Country {
@Id
@GeneratedValue
@column(name = "COUNTRY_ID")
private Long id;
@column(name = "COUNTRY_NAME")
private String name;
@column(name = "COUNTRY_CODE")
private String code;
@JacksonXmlElementWrapper(localName = "languages")
@JacksonXmlProperty(localName = "languages")
@OneToMany(mappedBy = "country",fetch = FetchType.EAGER,cascade = CascadeType.ALL)
List<Language> languages;
// getters and setters
}
和&Hellip;
@Entity
@Table(name = "LANGUAGE")
public class Language {
@Id
@GeneratedValue
@column(name = "LANGUAGE_ID")
private Long id;
@column(name = "LANGUAGE_NAME")
private String name;
@manyToOne
@Joincolumn(name = "COUNTRY_ID")
@JsonIgnore
private Country country;
//getters and setters
}
以下是我的Rest控制器:
@RestController
@requestMapping("/countries")
public class CountryRestController {
private final ICountryRepository iCountryRepository;
@Autowired
public CountryRestController(ICountryRepository iCountryRepository) {
this.iCountryRepository = iCountryRepository;
}
@PostMapping("/country")
public ResponseEntity<?> postCountryDetails(@requestBody Country country) {
Country savedCountry = this.iCountryRepository.save(country);
URI LOCATIOn = ServletUriComponentsBuilder.fromCurrentrequest().path("/{iD}")
.buildAndExpand(savedCountry.getId()).toUri();
return ResponseEntity.created(LOCATIOn).build();
}
//other methods
}
我正在尝试保存在JSON下面:
{
"name": "Ireland","code": "IRE","languages": [
{
"name": "Irish"
}
]
}
问题在于语言(子级)外键始终为null,但是正在插入其他属性。我用过class @JsonIgnore
属性Country
country
,是Language
因为它引起了请求大小的问题,因为我还有另一个API可以获取Country及其语言的数据。
请指导。
以上是大佬教程为你收集整理的外键在一对多关系中始终为空-使用JPA的Spring Boot Data全部内容,希望文章能够帮你解决外键在一对多关系中始终为空-使用JPA的Spring Boot Data所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。