Java 休眠实体持久性
想象一下,我从前端得到了新的实体。用于该类的Java类如下所示:Java 休眠实体持久性,java,hibernate,jpa,orm,Java,Hibernate,Jpa,Orm,想象一下,我从前端得到了新的实体。用于该类的Java类如下所示: public class SomeClass { private Long id; private String nameOfSomeClass; @OneToMany(mappedBy = "someClass") private List<Other> others; } 我来自前端的POST请求: { nameOfSomeClass: "Some name"
public class SomeClass {
private Long id;
private String nameOfSomeClass;
@OneToMany(mappedBy = "someClass")
private List<Other> others;
}
我来自前端的POST请求:
{
nameOfSomeClass: "Some name"
others: [{
otherName: "name1"
},
{
otherName: "name2"
}
]
}
如何持久化此对象?实际上我没有Other
的id,它在SomeClass
上有引用。SomeClass
的情况也一样
我的设想是:首先,我需要为SomeClass
使用空id
引用来持久化others
的每个元素。在那之后,我将获得每个其他人的id
。然后我将持久化SomeClass
对象,获取id
并再次持久化others
,但使用SomeClass
的id
我知道这是完全错误的,hibernate对此有一些正确的解决方案。你能帮我一下吗 你应该这样做:
创建SomeClass
的实例,并用值填充它,
创建Other
的instance并填充它们,然后将它们添加到一起:
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);
如果name
是唯一的,则将其用作ID
@krzysztofchichoki我将ID
用作数据库中的PK,则名称不唯一
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);