Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 休眠实体持久性_Java_Hibernate_Jpa_Orm - Fatal编程技术网

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"

想象一下,我从前端得到了新的实体。用于该类的Java类如下所示:

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);