`
thierry.xing
  • 浏览: 665134 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
580fa9c1-4a0c-3f40-a55a-c9256ce73302
Sencha Touch中...
浏览量:0
社区版块
存档分类
最新评论

Play!框架下JPA @OneToMany @ManyToOne注解实例

    博客分类:
  • Java
 
阅读更多

Use Case :后台用户(User),杂志(Magazine)。

 

一个后台用户可以创建很多杂志(@OneToMany)。

一本杂志被一个后台用户创建(@ManyToOne)。

 

其实个人感觉还是Rails里的belongs_toManyToOne 更加符合语义。

 

首先建立杂志类:

/**
 * 杂志类
 */
@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

分享到:
评论

相关推荐

    JPA_OneToMany学习教程

    对于OneToMany关系,我们需要在父实体上使用@OneToMany注解,并在子实体上使用@ManyToOne注解来建立双向关联。 3. **@OneToMany注解**:此注解包含几个重要的属性,如`mappedBy`、`fetch`和`cascade`。`mappedBy`...

    JPA注解@Access实例

    在测试项目`test-jpa`中,你可以找到关于`@Access`注解的实例代码,这将帮助你更好地理解和应用这个注解。通过分析和运行这些示例,你将能更直观地看到不同访问策略在不同场景下的效果。 总结,`@Access`注解是JPA...

    后端 Java Spring Data Jpa @Transactional 介绍

    在Java后端开发中,Spring框架提供了强大的事务管理能力,特别是在使用Spring Data JPA时,`@Transactional`注解使得事务处理变得简单易用。这个注解是Spring框架中的核心部分,它允许开发者声明性地控制事务边界,...

    play框架 JPA注解

    8. **@ManyToOne**:这是一个关联注解,表示一个实体的一对多关系。例如,如果一个用户可以有多个订单,那么在订单实体上可以使用@ManyToOne来引用用户实体,表示订单与用户的多对一关系。 以上是Play Framework中...

    JPA-2 基本注解

    在实际项目中,还可以结合使用其他高级注解,如@OneToMany、@ManyToOne、@OneToOne、@JoinColumn等,来处理更复杂的关系映射。JPA还支持查询语言JPQL(Java Persistence Query Language)和 Criteria API,提供更...

    JPA注解的解释和说明.pdf

    @OneToOne、@OneToMany、@ManyToOne:这些注解分别对应于一对一、一对多和多对一的数据库表关系。 关于MAVEN打包的问题,当pom.xml文件不存在或无法激活时,通常需要在pom.xml中添加maven-compiler-plugin插件,并...

    Hibernate JPA

    ### Hibernate JPA 知识点详解 #### 一、Hibernate JPA 概述 **Hibernate**作为当前最为流行的对象关系映射(Object Relational Mapping, ORM)框架之一,在Java开发领域占据着举足轻重的地位。它最早实现了**Java...

    spring3.0 mvc+hibernate3.6 +jpa 注解实例

    5. **@ManyToOne, @OneToOne, @OneToMany, @ManyToMany** - 描述对象之间的关联关系。 **Java Persistence API (JPA)** JPA是Java EE平台的一部分,为ORM提供了一种标准接口。在Spring 3.0中,JPA与Hibernate整合...

    Hibernate 注解一对多,多对一

    本文将深入探讨Hibernate中的两个关键概念——注解声明的一对多(@OneToMany)和多对一(@ManyToOne)关系,以及如何在实际项目中应用它们。 一、Hibernate注解介绍 Hibernate通过注解简化了Java类与数据库表之间的...

    Hibernate- oneToMany using annotation

    在这个例子中,`User`实体的`posts`属性用`@OneToMany`注解,而`Post`实体的`user`属性用`@ManyToOne`注解。`mappedBy`属性指定了关联字段在`Post`实体中,`cascade`属性设为`ALL`意味着在保存、更新或删除`User`时...

    spring data jpa 动态更新@DynamicUpdate

    在Java世界中,Spring Data JPA是一个非常流行的框架,它为开发者提供了与关系数据库交互的便利,通过简化JPA(Java Persistence API)的使用。在处理大量数据时,提高性能和效率是至关重要的,这就是`@...

    JPA注解总结大全!!!!

    ### JPA注解总结大全 Java Persistence API (JPA) 是一种用于管理关系数据库中的对象/关系映射的标准。本文将详细介绍与 JPA 相关的一些常用注解及其使用方法,帮助开发者更好地理解和掌握 JPA 的核心功能。 #### ...

    JPA课程manyToMany OneToMany 等全部测试

    @ManyToOne @JoinColumn(name = "department_id") private Department department; } ``` 在这里,`Department`类有一组`Employee`,而每个`Employee`都有一个`Department`。 ### 测试 在进行JPA关系映射的测试...

    eclipselink-plugins-nosql-4.0.2.v20230613-3bfa6ac6dd.zip

    EclipseLink,开源的持久化框架,是Eclipse Foundation的一部分,它Eclipse...此外,EclipseLink还提供了一套丰富的实体映射规范,如@OneToOne、@OneToMany、@ManyToOne和@ManyToMany等注解,以支持SQL和NOSQL数据库。

    play!框架学习文档(汉化了一部分)

    ### Play! 框架简介 Play! 是一款专为高效开发企业级 Java 应用程序而设计的轻量级框架。它强调敏捷开发、快速迭代,并且支持 RESTful 架构,使得开发者能够轻松地构建现代化的 Web 应用。 #### Play! 的特点 - **...

    使用JPA中@Query 注解实现update 操作方法(必看)

    在Java Persistence API (JPA)中,`@Query`注解是用于自定义查询的一种方式,它可以让我们在Repository接口中直接编写SQL或者HQL(Hibernate Query Language)来执行数据库操作。在本例中,我们将详细探讨如何使用`@...

    hibernate注解annotation的jar

    它包含了如@Id、@ManyToOne、@OneToMany等JPA注解,这些注解与Hibernate注解有重叠,但提供了更标准的、跨框架的持久化解决方案。 使用这些jar包,开发者可以创建一个完全基于注解的Hibernate应用,无需编写任何XML...

    在JPA的@Query注解中使用limit条件(详解)

    JPA @Query 注解中使用 Limit 条件详解 在 Java 持久层 API(JPA)中使用 @Query 注解时,需要注意 Limit 条件的使用。在本文中,我们将详细介绍如何在 JPA 的 @Query 注解中使用 Limit 条件。 Limit 条件的使用 ...

    JPA框架新技术: 注解

    8. **@OneToOne、@ManyToOne、@OneToMany、@ManyToMany** - 这些注解用于定义实体之间的关联关系。例如: ```java @OneToOne(cascade = CascadeType.ALL, mappedBy = "x") private A a; ``` 9. **@JoinColumn*...

    jpa注解详解

    使用@OneToOne、@ManyToOne、@OneToMany、@ManyToMany、@MapKey、@OrderBy批注可以指定实体关系的类型和特征,以微调数据库实现这些关系的方式。 6. 组合默认情况下,JPA持久性提供程序假设每个实体均映射到它自己...

Global site tag (gtag.js) - Google Analytics