我有一个关于与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 –