`

mappedBy跟JoinColumn/JoinTable

阅读更多

在对网站进行升级的时候,hibernate升级为最新的3.5.1版本的时候,发现了有个异常

Associations marked as mappedBy must not define database mappings like @JoinTable or @JoinColumn:*******

我说明mappedBy跟JoinColumn/JoinTable是互斥的。

在以前的版本中都是可以的,在@ManyToMany 中两个标签都写了。没有发现问题。现在却出现了这个问题~

这是不是hibernate完全支持JPA2的原因呢。。

 

对于mappedBy复习下:

a) 只有OneToOne,OneToMany,ManyToMany上才有mappedBy属性,ManyToOne不存在该属性;
b) mappedBy标签一定是定义在the owned side(被拥有方的),他指向the owning side(拥有方);
c) mappedBy的含义,应该理解为,拥有方能够自动维护 跟被拥有方的关系;

 

   当然,如果从被拥有方,通过手工强行来维护拥有方的关系也是可以做到的。
d) mappedBy跟JoinColumn/JoinTable总是处于互斥的一方,可以理解为正是由于拥有方的关联被拥有方的字段存在,拥有方才拥有了被 拥有方。mappedBy这方定义的JoinColumn/JoinTable总是失效的,不会建立对应的字段或者表

分享到:
评论
2 楼 icolorfulday 2013-03-17  
dfafaaffaaf
1 楼 lai555 2011-08-01  
hibernate 我也是从3.3升级到3.6 出现了这问题,请问您是怎么解决呢、

相关推荐

    springboot 1.5.2 jpa ManyToMany Demo

    在上面的代码中,`@ManyToMany`注解定义了多对多关系,`mappedBy`属性指定了反向关系,即`Course`实体中的`students`集合。`@JoinTable`用于定义中间表的详细信息。 然而,在处理这样的关系时,可能会遇到一个问题...

    Hibernate的三种关系映射例子演示

    `@JoinTable`用于定义中间表的名称以及双方实体的外键列名,而`mappedBy`表示多对多关系的反向引用。 通过这些例子,我们可以清楚地理解Hibernate如何通过注解实现对象关系映射,从而简化数据库操作。实际开发中,...

    springboot_relationships_manytomany_jointable

    在这个名为"springboot_relationships_manytomany_jointable"的项目中,我们主要探讨的是Spring Boot如何处理多对多关系,并通过联合表(join table)进行数据存储。在数据库设计中,多对多关系是一种常见的关联类型...

    Hibernate_Annotation关联映射

    通过@JoinTable批注定义关联表,该关联表包含了指回实体表的外键(通过@JoinTable.joinColoumns)以及指向目标实体表的外键(通过@JoinTable.inverseJoinColoumns) @Entity @Table(name="Test_TreeType") public class ...

    Hibernate 的多对一、一对多、多对多

    `@JoinTable`定义了中间表的名称以及两侧实体如何关联,而`mappedBy`属性则指定了关系的反向字段。 总结起来,Hibernate通过这三种关系映射机制,使得开发者能够轻松地处理复杂的数据关系,将Java对象模型和关系...

    Hibernate关于注解的一对多,多对多,一对一

    2. **@JoinColumn** 或 **@JoinTable**:对于一端,我们通常需要使用`@JoinColumn`注解来指定外键所在的列,如果关系是通过中间表建立的,则使用`@JoinTable`。 ```java @Entity public class Teacher { @...

    Hibernate注解 关联关系映射注解.docx

    如果需要自定义中间表的名称或字段,可以使用`@JoinTable`注解。在双向多对多关联中,依然需要`mappedBy`来指定哪一方负责维护关联关系。 总的来说,Hibernate的注解提供了强大的灵活性来处理不同类型的关联关系,...

    hibernate 关系注解

    双向一对一关系需要在两个实体类中都使用`@OneToOne`,一方使用`mappedBy`属性引用另一方的属性。例如: ```java // 在User类中 @OneToOne(mappedBy="user") private Profile profile; // 在Profile类中 @...

    hibernate_UD

    请测试代码并查看测试,我建议您@JoinColumn批注,并将mappedBy放在报告的另一侧。 也可以使用@JoinTable批注完成此@JoinTable 。 @JoinTable批注指示关系的所有者-相应的表包含所引用表的外键列。 @Entity ...

    JPA中的多对多双向关联实体定义与注解设置

    总结来说,JPA中的多对多双向关联实体定义涉及`@ManyToMany`、`@JoinTable`以及`mappedBy`等注解的使用。正确配置这些注解可以让我们轻松地管理实体之间的复杂关系,并简化数据库操作。在实际项目中,理解并熟练掌握...

    hibernate中many2many映射

    在这里,`mappedBy`属性用于指定反向关联的属性名称,通常在另一个实体类中。`@JoinTable`与XML映射文件中的`<join-table>`元素相对应。 ### 4. 数据库配置 在Hibernate配置文件(如`hibernate.cfg.xml`)中,需要...

    hibernate各种常用关联关系的基本配置

    配置方式通常通过`@OneToOne`注解实现,可以设置`mappedBy`属性来指定在另一个实体中的反向关联字段。 ```java @Entity public class User { @OneToOne(mappedBy = "user") private Profile profile; } @Entity ...

    Hibernate注释

    - **示例**:假设有一个班级类(`Class`)和一个学生类(`Student`),其中`Student`类中定义了`@ManyToOne`类型的`class`字段,则`Class`类中可以使用`@OneToMany(mappedBy = "class")`来定义一对多关系。...

    如何使用Hibernate 双向 单-多 多-单 多-多 Hibernate.rar

    同时,需要设置`mappedBy`属性来指定外键所在的实体字段。 ```java @Entity public class Student { @Id private Long id; // 其他属性... @ManyToOne @JoinColumn(name = "class_id") private Classroom ...

    hibernate对象三状态及OneToOne&OneToMany&ManyToMany

    @JoinTable注解定义了中间表及其连接列,而mappedBy属性表明Course实体是关系的拥有者。 以上就是关于Hibernate对象三状态以及OneToOne、OneToMany和ManyToMany关系映射的详细讲解,希望对你理解Hibernate的工作...

    hibernate 一对一 多对多的关系

    在上述代码中,`@OneToOne`注解用于声明一对一关系,`mappedBy`属性表示反向关联,而`@JoinColumn`则指定了关联字段的名称。 #### 外键(ForeignKey) ```java @Entity public class User { @Id @GeneratedValue...

    JPA一对一,一对多,多对多关系映射

    - `@JoinColumn`或`@JoinTable`注解用于定义外键或中间表。 例如: ```java @Entity public class User { @Id private Long id; @OneToMany(mappedBy = "user") private List<Order> orders; } @Entity ...

    13_JPA详解_JPA中的多对多双向关联实体定义与注解设置.zip

    7. `@JoinColumn`: 在单向关联中用于指定外键列,但在双向关联中通常不直接使用,而是由`@JoinTable`处理。 在实体类中,双向关联通常会涉及两个属性,分别代表对方实体的集合。例如,在`Student`实体中会有`List...

    Hibernate实体关联速查表

    这可以通过`@OneToOne`注解实现,可配置`mappedBy`属性来指定关联的反向字段。例如: ```java @Entity public class User { @OneToOne(mappedBy = "user") private Profile profile; } @Entity public class ...

Global site tag (gtag.js) - Google Analytics