Use Case
:后台用户(User),杂志(Magazine)。
一个后台用户可以创建很多杂志(@OneToMany)。
一本杂志被一个后台用户创建(@ManyToOne)。
其实个人感觉还是Rails里的belongs_to
比ManyToOne
更加符合语义。
首先建立杂志类:
/**
* 杂志类
*/
@Entity
public class Magazine extends Model
{
// 主题
@Required
public String topic;
// 刊号
@Required
public int serial;
// 简介
@Required
public String summary;
// 发布日期
@Required
public String date;
// 被一个后台用户创建
@ManyToOne
public User creator;
}
其次是后台用户类:
@Entity
public class User extends Model
{
// 用户名
public String username;
// 密码
public String password;
// 是否是管理员
public int isAdmin;
// 主数据库的id
public long common_user_id;
// 添加过很多杂志
@OneToMany(mappedBy = "creator")
public List<Magazine> magazines;
}
可以看到,
@OneToMany(mappedBy = "creator")
public List<Magazine> magazines;
说明
1. 两个类之间是通过creator来关联,所以数据库不会生成一个中间表。
2. 因为Magazine类对于@ManyToOne没有额外修饰, 所以数据库中magazine表会根据约定自动产生一个creator_id(也就是属性"creator"+_id)并生成外键指向user表的id,通过magazine表的creator_id和user表的id的join来获取相关的数据。
如果改成这样
@ManyToOne
@JoinColumn(name = "main_creator_id", referencedColumnName = "common_user_id")
public User creator;
那么则magazine表会产生一个main_creator_id(而不是creator_id),并生成外键指向user表的common_user_id。
来自:http://thierry-xing.iteye.com/blog/1443317
分享到:
相关推荐
对于OneToMany关系,我们需要在父实体上使用@OneToMany注解,并在子实体上使用@ManyToOne注解来建立双向关联。 3. **@OneToMany注解**:此注解包含几个重要的属性,如`mappedBy`、`fetch`和`cascade`。`mappedBy`...
在测试项目`test-jpa`中,你可以找到关于`@Access`注解的实例代码,这将帮助你更好地理解和应用这个注解。通过分析和运行这些示例,你将能更直观地看到不同访问策略在不同场景下的效果。 总结,`@Access`注解是JPA...
在Java后端开发中,Spring框架提供了强大的事务管理能力,特别是在使用Spring Data JPA时,`@Transactional`注解使得事务处理变得简单易用。这个注解是Spring框架中的核心部分,它允许开发者声明性地控制事务边界,...
8. **@ManyToOne**:这是一个关联注解,表示一个实体的一对多关系。例如,如果一个用户可以有多个订单,那么在订单实体上可以使用@ManyToOne来引用用户实体,表示订单与用户的多对一关系。 以上是Play Framework中...
在实际项目中,还可以结合使用其他高级注解,如@OneToMany、@ManyToOne、@OneToOne、@JoinColumn等,来处理更复杂的关系映射。JPA还支持查询语言JPQL(Java Persistence Query Language)和 Criteria API,提供更...
@OneToOne、@OneToMany、@ManyToOne:这些注解分别对应于一对一、一对多和多对一的数据库表关系。 关于MAVEN打包的问题,当pom.xml文件不存在或无法激活时,通常需要在pom.xml中添加maven-compiler-plugin插件,并...
### Hibernate JPA 知识点详解 #### 一、Hibernate JPA 概述 **Hibernate**作为当前最为流行的对象关系映射(Object Relational Mapping, ORM)框架之一,在Java开发领域占据着举足轻重的地位。它最早实现了**Java...
5. **@ManyToOne, @OneToOne, @OneToMany, @ManyToMany** - 描述对象之间的关联关系。 **Java Persistence API (JPA)** JPA是Java EE平台的一部分,为ORM提供了一种标准接口。在Spring 3.0中,JPA与Hibernate整合...
本文将深入探讨Hibernate中的两个关键概念——注解声明的一对多(@OneToMany)和多对一(@ManyToOne)关系,以及如何在实际项目中应用它们。 一、Hibernate注解介绍 Hibernate通过注解简化了Java类与数据库表之间的...
在这个例子中,`User`实体的`posts`属性用`@OneToMany`注解,而`Post`实体的`user`属性用`@ManyToOne`注解。`mappedBy`属性指定了关联字段在`Post`实体中,`cascade`属性设为`ALL`意味着在保存、更新或删除`User`时...
在Java世界中,Spring Data JPA是一个非常流行的框架,它为开发者提供了与关系数据库交互的便利,通过简化JPA(Java Persistence API)的使用。在处理大量数据时,提高性能和效率是至关重要的,这就是`@...
### JPA注解总结大全 Java Persistence API (JPA) 是一种用于管理关系数据库中的对象/关系映射的标准。本文将详细介绍与 JPA 相关的一些常用注解及其使用方法,帮助开发者更好地理解和掌握 JPA 的核心功能。 #### ...
@ManyToOne @JoinColumn(name = "department_id") private Department department; } ``` 在这里,`Department`类有一组`Employee`,而每个`Employee`都有一个`Department`。 ### 测试 在进行JPA关系映射的测试...
EclipseLink,开源的持久化框架,是Eclipse Foundation的一部分,它Eclipse...此外,EclipseLink还提供了一套丰富的实体映射规范,如@OneToOne、@OneToMany、@ManyToOne和@ManyToMany等注解,以支持SQL和NOSQL数据库。
### Play! 框架简介 Play! 是一款专为高效开发企业级 Java 应用程序而设计的轻量级框架。它强调敏捷开发、快速迭代,并且支持 RESTful 架构,使得开发者能够轻松地构建现代化的 Web 应用。 #### Play! 的特点 - **...
在Java Persistence API (JPA)中,`@Query`注解是用于自定义查询的一种方式,它可以让我们在Repository接口中直接编写SQL或者HQL(Hibernate Query Language)来执行数据库操作。在本例中,我们将详细探讨如何使用`@...
它包含了如@Id、@ManyToOne、@OneToMany等JPA注解,这些注解与Hibernate注解有重叠,但提供了更标准的、跨框架的持久化解决方案。 使用这些jar包,开发者可以创建一个完全基于注解的Hibernate应用,无需编写任何XML...
JPA @Query 注解中使用 Limit 条件详解 在 Java 持久层 API(JPA)中使用 @Query 注解时,需要注意 Limit 条件的使用。在本文中,我们将详细介绍如何在 JPA 的 @Query 注解中使用 Limit 条件。 Limit 条件的使用 ...
8. **@OneToOne、@ManyToOne、@OneToMany、@ManyToMany** - 这些注解用于定义实体之间的关联关系。例如: ```java @OneToOne(cascade = CascadeType.ALL, mappedBy = "x") private A a; ``` 9. **@JoinColumn*...
使用@OneToOne、@ManyToOne、@OneToMany、@ManyToMany、@MapKey、@OrderBy批注可以指定实体关系的类型和特征,以微调数据库实现这些关系的方式。 6. 组合默认情况下,JPA持久性提供程序假设每个实体均映射到它自己...