休眠实体持久性
问题描述:
想象一下,我从前端获得新实体。对于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
再次,但id
SomeClass
。
我知道这是完全错误的,休眠有一些正确的解决方案。你能帮我解决吗?
答
你应该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);
如果'name'是唯一的,则将其用作'ID' –
@KrzysztofCichocki我在数据库中使用'id'作为PK,名称不是唯一的 – Nox