我有一個關於與thymeleaf和關係管理使用springboot的問題。Springboot關係管理
我有一個需要充分的雙向三個對象:
OBJ1(多) - TO - (一)OBJ2(一) - TO - (多)OBJ 3
他們設置爲:
public class Obj1 {
@Id
private long id;
@ManyToOne(cascade=CascadeType.ALL)
private Obj2 obj2;
public class Obj2 {
@Id
private long id;
@OneToOne
private User planUser
// Other fields
@OneToMany(mappedby = obj2)
private List<Obj1> obj1;
@OneToMany(mappedby obj2)
private List<Obj3> obj3;
public class Obj3 {
@Id
private Long id;
@ManyToOne
private Obj2 obj2;
在視圖方面,有一個名爲view1的頁面,用於填充Obj1。這工作。
有一個名爲view2的另一個頁面: 1. OBJ1顯示一些基本的細節 2.填充/更新OBJ 2和OBJ 3
的問題是如何提交視圖2更新/創建OBJ 2和OBJ 3。
我試圖讓控制器去呼籲OBJ1服務方法:
@Override
@Transactional
public Obj1 associateObj1ToObj2(Long Obj2Id, Obj1 newObj1) {
final Obj2 obj2 = ojbj2Repository.findOne(obj2Id);
obj2.getObj1().add(newObj1);
newObj1.setObj2(obj2);
return obj1Repository.save(newObj1);
}
問題:
- 即使我有@Post形式控制器obj2Repo.save (obj2)當我嘗試在associateObj1ToObj2中調用它時 - 應該保存的值(如userPlan)不是。爲什麼?
- 在上述情況下,單個根對象是否可以並且應該爲多個頁面提供服務? (建議的替代方案顯然是創建一個混合類用於支持頁面view2 - 鏈接到git示例是偉大的(這就是所謂的DTO))。
- 是否糾正springboot不會處理關係設置,至少在一個孩子的孩子需要被更新的情況下)
- 什麼是Hibernate的Session的生活嗎?
注意:許多關係真的應該叫幾個 - 對關係的藏品幾乎總是人數少於10
這個答案似乎是有一定的關係:Could not initialize proxy - no Session
IMO,你最好一次問一個問題。如果你花時間提供一個[最小,完整,可驗證的例子](/ help/mcve) –
這將是非常棘手的,因爲我會很難看到你在做什麼,將需要重複項目,然後重構和混淆。 –
@AndyWilkinson做這個幫助:https://github.com/bigalnz/mvce/tree/master –