休眠实体持久性

问题描述:

想象一下,我从前端获得新实体。对于Java类看起来像:休眠实体持久性

public class SomeClass { 

    private Long id; 

    private String nameOfSomeClass; 

    @OneToMany(mappedBy = "someClass") 
    private List<Other> others; 

} 

和:

{ 
    nameOfSomeClass: "Some name" 
    others: [{ 
      otherName: "name1" 
     }, 
     { 
      otherName: "name2" 
     } 

    ] 
} 

我如何能坚持这个对象:

public class Other { 

    private Long id; 

    private String otherName;   

    @ManyToOne 
    private SomeClass someClass; 

} 

我从前端POST请求?其实我没有Other的编号,它在SomeClass上有参考。 SomeClass的情况相同。

我的看法是:首先我需要坚持others的每个元素,并为SomeClass提供空的id参考。之后,我会得到others各自的id's。然后我会坚持SomeClass对象,并得到id并坚持others再次,但idSomeClass

我知道这是完全错误的,休眠有一些正确的解决方案。你能帮我解决吗?

+0

如果'name'是唯一的,则将其用作'ID' –

+0

@KrzysztofCichocki我在数据库中使用'id'作为PK,名称不是唯一的 – Nox

你应该hadle这一问题的方法是:

创建SomeClass实例,其值填充它, 创建的Other的instaces并填写并添加结束“链接”在一起:

SomeClass s = new SomeClass(); 
s.setNameOfSomeClass(nameOfSomeClass); 

Other o1 = new Other(); 
o1.setOtherName(otherName); 
o1.setSomeClass(s) 

List others = new ArrayList(); 
others.add(o1); 

s.setOthers(others);