Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.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 - Fatal编程技术网

Java 一对多映射

Java 一对多映射,java,hibernate,Java,Hibernate,我在Person和Address类之间有一对多的关系。根据Hibernate文档,多方始终是关系的拥有方,即多方不应定义mappedBy元素 在我的例子中,一个人可以有很多地址,所以一个人对应于一方,而地址对应于多方。如果我没有在两个类中定义mappedBy元素,那么哪个类将成为关系的所有者 所有者表总是具有外键映射吗?如果不指定mappedBy,则没有双向关系。相反,您将拥有两个单向关系 在一对多关系中,外键必须位于所有者表或单独的联接表中。您不能将其放在一对多关系的一侧的表中。把它放在一边是

我在Person和Address类之间有一对多的关系。根据Hibernate文档,多方始终是关系的拥有方,即多方不应定义mappedBy元素

在我的例子中,一个人可以有很多地址,所以一个人对应于一方,而地址对应于多方。如果我没有在两个类中定义mappedBy元素,那么哪个类将成为关系的所有者


所有者表总是具有外键映射吗?

如果不指定mappedBy,则没有双向关系。相反,您将拥有两个单向关系


在一对多关系中,外键必须位于所有者表或单独的联接表中。您不能将其放在一对多关系的一侧的表中。把它放在一边是没有意义的,因为不能用JPA将引用到多边表的多个值外键映射到一行的一列。

如果不指定mappedBy,则没有双向关系。相反,您将拥有两个单向关系


在一对多关系中,外键必须位于所有者表或单独的联接表中。您不能将其放在一对多关系的一侧的表中。把它放在一边是没有意义的,因为不能用JPA将引用多个边的表的多个值外键映射到一行的一列。

是的,拥有实体的表始终是带有外键的表

令人遗憾的是,JPA规范的作者选择将该实体称为关系的所有者。该名称与聚合相关的术语冲突,聚合通常同时使用。例如,在您的情况下,此人拥有该地址如果您删除某人,您将删除其所有地址;如果你删除了一个地址,你就不会删除拥有它的人。然而,正是地址拥有了人与地址之间的关系


实际上,拥有方只是指拥有表的一方,该表实际定义了用于记录关系的外键。

是的,拥有实体的表始终是具有外键的表

令人遗憾的是,JPA规范的作者选择将该实体称为关系的所有者。该名称与聚合相关的术语冲突,聚合通常同时使用。例如,在您的情况下,此人拥有该地址如果您删除某人,您将删除其所有地址;如果你删除了一个地址,你就不会删除拥有它的人。然而,正是地址拥有了人与地址之间的关系

实际上,拥有方只是指拥有表的一方,表实际上定义了用于记录关系的外键