hibernate -- 注解映射实体和表
表名的映射
//代表此类参与ORM映射,此注解必须要有
@Entity
//代表user这个类映射了一个表user50,如果表名和类名一样,此注解可以省略
@Table(name="user50")
public class User {
主键的映射
//主键,此注解必须要有
@Id
//数据库表中主键列名为id,如果实体类属性名和列名相同,此注解可以省略
@Column(name="id")
//主键的维护策略
@GenericGenerator(name="inc50",strategy="increment")
@GeneratedValue(generator="inc50")
private Integer userID;
属性映射成表的字段
//@Column(name="name")//此属性要映射到名为name的列上,若属性名和列名相同,则注解可以省略
private String name;
日期类型的映射
@Column(name="birth")
//如果属性是日期格式,可以设置日期的保存规格
//time:只保存时间 date:只保存日期 timestamp:(默认)日期+时间
@Temporal(TemporalType.DATE)
private Date birthday;
表之间的关系是一对一的映射
Person实体中:
//关系属性:告知Passport它的关系属性
//mappedBy"对方中映射着外键的关系属性==Passport表中有一个关系属性,名字是person50"
@OneToOne(mappedBy="person50")
//ALL:增删改都可以级联(cascade)
//save-update:增加和更新可以级联
//delete:删除可以级联
//如果不设置,则增删改都不可以级联
//注意:查询例外,不受级联权限的控制,默认级联。
@Cascade(value=CascadeType.ALL)
private Passport passport50;
Passport实体中:
//关系属性
@OneToOne
//JoinColumn:代表是从表,name的值代表:Passport表中外键名为person_id
@JoinColumn(name="person_id")
//@Cascade
private Person person50;
表之间的关系是一对多的映射
user表 1: n order表
user实体:
@OneToMany(mappedBy="user")
//ALL:增删改都可以级联(cascade)
//save-update:增加和更新可以级联
//delete:删除可以级联
//如果不设置,则增删改都不可以级联
//注意:查询例外,不受级联权限的控制,默认级联。
@Cascade(value=CascadeType.DELETE)
private Set<Order> orders=new HashSet<Order>();
order实体:
//关系属性
@ManyToOne
//JoinColumn:name代表关系属性映射的列
@JoinColumn(name="user_id")
private User user;
表之间的关系是多对多的映射
Student n:n Course 关系表: r_c_s
Student实体:
//关系属性
//EAGER: 查询时关联的数据也同时取出放入内存中,因为在内存里,所以在session外也可以取
@ManyToMany(fetch=FetchType.EAGER)
//中间表,两个外键: joinColumns=指向自己的外键 inverseJoinColumns=指向对方的外键
@JoinTable(name="r_c_s"
,joinColumns={@JoinColumn(name="stu_id")}
,inverseJoinColumns={@JoinColumn(name="cour_id")})
@Cascade(value=CascadeType.ALL)
private Set<Course> courses=new HashSet<Course>();
Course实体:
//关系属性
@ManyToMany
@JoinTable(name="r_c_s"
,joinColumns={@JoinColumn(name="cour_id")}
,inverseJoinColumns={@JoinColumn(name="stu_id")})
@Cascade(value=CascadeType.ALL)
private Set<Student> students=new HashSet<Student>();
hibernate -- 注解映射实体和表的更多相关文章
- Hibernate注解映射sequence时出现无序增长问题+hibernate 映射 oracle ID自动增长:
Hibernate注解映射sequence时出现无序增长问题+hibernate 映射 oracle ID自动增长: 通过Hibernate注解的方式映射oracel数据库的sequence主键生成器 ...
- Hibernate框架学习之注解映射实体类
前面的相关文章中,我们已经介绍了使用XML配置文件映射实体类及其各种类型的属性的相关知识.然而不论是时代的潮流还是臃肿繁杂的配置代码告诉我们,注解配置才是更人性化的设计,于是学习了基本的映射 ...
- [Hibernate] 注解映射例子
Hibernate 注解(Hibernate Annotation) 是一种比较新的方式,通过在 java 简单类增加注解,来声明 java 类和数据库表的映射,作用和 xml 文件相似.hibern ...
- Hibernate注解映射联合主键的三种主要方式
今天在做项目的时候,一个中间表没有主键,所有在创建实体的时候也未加组件,结果报以下错误: org.springframework.beans.factory.BeanCreationException ...
- hibernate通过注解实现实体和表的映射
参考: 表名的映射: //代表此类参与ORM映射,此注解必须要有 @Entity //代表user这个类映射了一个表user50,如果表名和类名一样,此注解可以省略 @Table(name=" ...
- Hibernate 注解映射
工作中遇到hibernate映射的一些问题,这里总结一下 (特别是测试时,许多数据并不能有效关联.所以@NotFound 很重要) 一,假设有2张表user,company 我们知道,一个用户属于一个 ...
- 联合主键用Hibernate注解映射的三种方式
第一.将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,再将该类注解为@Embeddable,最后在主类中(该类不包含联合主 ...
- Hibernate处理一个实体映射多张相同结构的数据表--动态映射
[转自] http://blog.csdn.net/majian_1987/article/details/8725197 LZ在项目中需要处理这样一个业务,每天都有终端设备上传GPS位置信息到服务端 ...
- hibernate用注解配置实体类的映射
一.注解类 1. @Table 声明了该实体bean映射指定的表(table),目录(catalog)和schema名字 2. @Id 声明了该实体bean的标识属性(对应表中的主键). 3. @Co ...
随机推荐
- ul制作导航菜单
首先上图,最终效果: HTML代码: <!DOCTYPE html><html> <head> <meta charset="utf-8" ...
- ubuntu禁止系统自动升级之界面操作
##第一步:首先找到System Settings,如下图所示: ##第二步:然后找到Solfware & Updates,如下图所示: ##第三步:点击Solfwate & Upda ...
- runloop timer
RunLoop这个东西,其实我们一直在用,但一直没有很好地理解它,或者甚至没有知道它的存在.RunLoop可以说是每个线程都有的一个对象,是用来接受事件和分配任务的loop.永远不要手动创建一个run ...
- CVE-2017-17215 - 华为HG532命令注入漏洞分析
前言 前面几天国外有个公司发布了该漏洞的详情.入手的二手 hg532 到货了,分析测试一下. 固件地址:https://ia601506.us.archive.org/22/items/RouterH ...
- XSS学习(未完..)
前言 XSS 漏洞原理非常简单,实际应用中非常灵活,于是通过 prompt(1) to win 来学习学习 正文 工具 分析正则表达式 https://regex101.com/ http://xss ...
- 612.1.002 ALGS4 | Analysis of Algorithms
我们生活在大数的时代 培养数量级的敏感! Tip:见招拆招 作为工程师,你先要能实现出来. 充实基础,没有什么不好意思 哪怕不完美.但是有时候完成比完美更重要. 之后再去想优化 P.S.作者Rober ...
- phantomjs在centos7下的安装
http://phantomjs.org/download.html 下载 Linux 64-bit 解压 tar jxvf 安装包名称.tar.bz2 pwd 查看路径 ln -sf phantom ...
- Ubunt 安装mysql
apt-get install mysql-client-core-5.6apt-get install mysql-client-5.6apt-get install mysql-server-5. ...
- Ubuntu 安装ipython
操作步骤安装ipythonsudo apt-get install ipython 安装ipython[notebook]终端输入以下命令: sudo apt-get install ipython- ...
- JSP中forEach和forTokens循环的用法
<%@page import="java.util.*"%> <%@ page language="java" contentType=&qu ...