`
xpopi
  • 浏览: 62645 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

JPA,在@OneToMany里加入mappedBy属性避免生成中间表

JPA 
阅读更多

使用JPA的时候,如果A B两个实体间是一对多,多对一的关系,如果不在@OneToMany里加入mappedBy属性会导致自动生成一个多余的中间表。比如:

@Entity
public class A {
    @OneToMany(mappedBy="a")
    public Set<B> bs = new HashSet<B>(0);
}
 
@Entity
public class B {
    @ManyToOne
    public A a;
}

这样写会只成生成表A和表B,B中会有一个到表A的外键。但是如果不加mappedBy=”a”, 那么就会再生成一张A_B表。

 

分享到:
评论

相关推荐

    JPA_OneToMany学习教程

    `mappedBy`指定了在子实体中引用父实体的属性名。`fetch`用于指定加载策略,可以是EAGER(即时加载)或LAZY(延迟加载)。`cascade`控制了对子实体的操作是否应该级联到父实体。 4. **@JoinColumn**:在父实体中,...

    JPA课程manyToMany OneToMany 等全部测试

    @OneToMany(mappedBy = "department") private List&lt;Employee&gt; employees; } @Entity public class Employee { @ManyToOne @JoinColumn(name = "department_id") private Department department; } ``` 在这里...

    JPA学习总结(三)--JPAOneToMany双向关联

    在本篇《JPA学习总结(三)--JPAOneToMany双向关联》中,我们将深入探讨Java Persistence API (JPA)中的OneToMany关系映射,这是一种在数据库表之间建立一对多关联的方式。JPA作为ORM(对象关系映射)框架,允许我们...

    Hibernate- oneToMany using annotation

    `@OneToMany`注解是Hibernate提供的JPA(Java Persistence API)的一部分,它允许我们在实体类中定义一个集合属性,该属性对应于数据库中另一张表的一系列记录。这个注解的使用通常配合`@JoinColumn`或`@JoinTable`...

    Ejb3-OneToMany--Good.rar

    在这里,`mappedBy`属性指定了子实体(Order)中用于建立关联的字段,通常是父实体的引用。 2. **关联类型**:默认情况下,`@OneToMany`的关系是无序的,可以通过`@OrderBy`来指定排序规则。同时,可以设置`...

    jpa的实体映射关系7种

    双方都需要使用`@OneToMany`和`@ManyToOne`注解来定义关系,且`mappedBy`应设置在`@OneToMany`的一侧。 5. **双向多对一**: 相对于双向一对一,这里是一方可以拥有多个另一方实体,但两者都知道这个关系。双方都...

    jpa-day3-onetomany.zip

    在上述代码中,“mappedBy”属性指定了在Contact实体中哪个字段是外键,而`@JoinColumn`注解则用于指定外键在数据库中的列名。 配置好实体关系后,Spring Data JPA会自动处理关联的查询。例如,当我们想要获取一个...

    JPA中,多个表相关联设定的方法。

    在给出的代码中,`Person`类有一个`Set&lt;Address&gt;`属性,用`@OneToMany(mappedBy="person")`注解,表明`Address`实体通过`person`字段引用`Person`,`mappedBy`属性指定反向关联的属性名。 ```java @OneToMany...

    10_JPA详解_JPA中的一对多双向关联与级联操作.zip

    这里的`mappedBy`属性指定了在另一端的实体字段名,`@JoinColumn`则定义了外键所在的列名。 **双向关联** 在上述例子中,我们定义了一个双向关联,即`Student`能够访问其关联的`Course`列表,同时`Course`也能知道...

    hibernate常见异常针对于jpa

    可以通过`@JoinColumn`避免中间表的生成,并指定外键名。 3. **加载策略:** `@ManyToOne`默认使用立即加载,`@OneToMany`默认使用懒加载。 **示例代码:** ```java @ManyToOne(fetch = FetchType.EAGER) @...

    Hibernate 注解一对多,多对一

    1. 在使用`@OneToMany`时,如果没有指定`mappedBy`,那么在父类中需要使用`@JoinColumn`指定外键字段,并且这个字段通常会在数据库中创建一个索引。 2. 当使用`FetchType.LAZY`时,需要确保JPA实现支持懒加载,例如...

    JPA学习笔记

    `@OneToMany`和`@ManyToOne`组合使用实现一对多关联,`mappedBy`属性同样可以用来指定维护方。可以是字段级关联或表级关联。 4.3 多对多关联 多对多关联使用`@ManyToMany`注解,通常需要`@JoinTable`定义中间表。 ...

    JPA-4 映射关联关系

    我们使用`@ManyToMany`注解在两边实体上定义关联,并通过`mappedBy`属性指定中间表(也称为关联表)的持有者。通常,我们需要创建一个独立的实体类来表示这个中间表,用`@JoinTable`注解来定义它。 在实践中,理解...

    jpa--10.单向一对多

    `mappedBy`属性指定关系的维护端是`Employee`实体,它引用了`Department`实体。 2. **多方实体(例如:Employee)**: ```java @Entity public class Employee { @Id @GeneratedValue(strategy = ...

    JPA中的一对多双向关联与级联操作

    `mappedBy`属性在`User`类中指定了关联字段(即`Order`类的`user`字段),`@JoinColumn`注解在`Order`类中定义了外键字段`user_id`。 级联操作不仅可以应用于删除,还可以应用于其他操作,如`PERSIST`(保存)、`...

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

    - 通过`mappedBy`属性指定中间表的引用方,否则需在双方实体上定义关系。 - `@JoinTable`注解用于定义中间表及其外键。 例如: ```java @Entity public class User { @Id private Long id; @ManyToMany @Join...

    spring data jpa

    @OneToMany(mappedBy = "department") private List&lt;User&gt; users; // ... } ``` ### 6. `@Repository` `@Repository` 是 Spring Data JPA 的一个组件注解,用于标记数据访问层的接口。Spring 会自动实现该接口,...

    jpa单表递归树形结构实现

    @OneToMany(mappedBy = "parentId", cascade = CascadeType.ALL) private List&lt;Node&gt; children; // 构造函数、getter和setter省略 } ``` 接下来,我们配置Spring JPA。在`applicationContext.xml`或使用Java...

    Toplink_JPA注解参考

    @OneToMany(mappedBy = "department") private List&lt;Employee&gt; employees; // ... } @Entity public class Employee { @Id private Long id; @ManyToOne @JoinColumn(name = "DEPARTMENT_ID") private ...

    jpa-开发21

    在被维护端(one side),我们可以在实体上使用 `@OneToMany` 注解,并通过 `mappedBy` 属性指明它是被维护端。例如: ```java @Entity public class Role { @OneToMany(mappedBy = "role") private List&lt;User&gt; ...

Global site tag (gtag.js) - Google Analytics