我在两个实体之间有双向关系。这是两个类,省略了getters / setter方法:
@Entity
@Table(name = "strategy")
public class Strategy {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String name;
@OneToMany(mappedBy = "strategy", cascade = { CascadeType.ALL })
private List<StrategyDetail> details;
}
还有
public class StrategyDetail {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String content;
@ManyToOne()
private Strategy strategy;
}
然后我对此有一个存储库和控制器,但是没有什么值得一提的(我的存储库仅扩展了JpaRepository,并且控制器具有一个get / post映射)。
当我尝试创建策略时,我发送以下JSON:
{
"name": "my strat",
"details": [{
"content": "my content"
}]
}
响应是这样的:
{
"id": 1,
"name": "my strat",
"details": [
{
"id": 2,
"content": "my content",
"strategy": null
}
]
}
我不明白为什么这里的策略为null,映射非常明显。然后,当我尝试制定策略时,答案是这样的:
[
{
"id": 1,
"name": "my strat",
"details": []
}
]
我猜这是按预期的方式工作(外键失败,因此详细信息尚未保存?)。
我应该进行哪些更改才能使其正常工作(意味着可以访问strategyDetail中的策略)?我认为更好的是,应该拥有策略ID,而不是整个策略。
我尝试通过删除StrategyDetail中的strategy属性来消除双向性,然后确实保存了详细信息,但是显然我无法访问详细信息中的strategy字段...
在过去的一个小时中,我一直在寻找解决方案,看了教程,但没有找到,但是我没有找到有效的解决方案。