Java 多个一个一个多个双向:从参考表中检索数据
我想在发布对象时,从关系的引用表返回数据 该关系定义如下:Java 多个一个一个多个双向:从参考表中检索数据,java,spring,spring-boot,hibernate,hibernate-mapping,Java,Spring,Spring Boot,Hibernate,Hibernate Mapping,我想在发布对象时,从关系的引用表返回数据 该关系定义如下: @Entity @Table( name = "application") public class Application { @Id @JsonIgnore private Long id; @ManyToOne @JoinColumn(name = "product_category") private ProductCategory productCategory;
@Entity
@Table( name = "application")
public class Application {
@Id
@JsonIgnore
private Long id;
@ManyToOne
@JoinColumn(name = "product_category")
private ProductCategory productCategory;
...
}
以及:
我希望获得以下json输出:
...
"productCategory": {
"productCategoryId": 0,
"description": "Personal Loan"
},
...
但我得到的是:
...
"productCategory": {
"productCategoryId": 0,
"description": null
},
...
您能提供建议吗?您的问题中没有太多代码,但您在评论中提到了您要返回的内容:
return applicationRepository.save(appRequest);
另一方面,您没有在映射中将更改从父级级联到子级:
@ManyToOne
@JoinColumn(name = "product_category")
private ProductCategory productCategory;
我认为将@ManyToOne更改为@ManyToOnecascade=CascadeType.ALL应该会有所帮助
编辑:
如果无法更改模型,只需返回实体:
return applicationRepository.findById(id);
这样jpa就不会在保存时覆盖实体,它只是从db中读取一个实体。您可以发布生成json响应的代码吗?这只是存储库的简单返回。返回applicationRepository.saveappRequest;如果没有看到您的代码,什么都不能说。数据已经出现在product_category表中。如果我错了,请纠正我,但如果我不想将更改传播到引用表,我不需要使用该选项。来自Crudepository的save方法返回持久化/合并实体。数据库中的数据视图可能未刷新。你试过我的建议了吗?在这种情况下我不能用它。product_category具有此json对象未提供的必需描述字段。。。所以我不能只发布id,因为它返回了一个null description field的错误。使用return applicationRepository.findByIdid如何?如果我搜索一个实体,它会工作!你知道为什么吗?
@ManyToOne
@JoinColumn(name = "product_category")
private ProductCategory productCategory;
return applicationRepository.findById(id);