Hibenate @Table 注解

SAP-MM-PR分配货源并转PO 阅读详情

@Table:
当实体类与其映射的数据库表名不同名时需要使用 @Table 标注说明,该标注与 @Entity 标注并列使用,置于实体类声明语句之前,可写于单独语句行,也可与声明语句同行。
@Table 标注的常用选项是 name,用于指明数据库的表名
@Table标注还有一个两个选项 catalog 和 schema 用于设置表所属的数据库目录或模式,通常为数据库名。uniqueConstraints选项用于设置约束条件,通常不须设置。

name属性:
name属性用于指定数据库表名称
若不指定则以实体类名称作为表名

@Table
@Entity
public class Customer {
    private Integer id;
    private String name;
    private String email;
    private int age;
    ......
}
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

生成的数据库表DDL:

CREATE TABLE `customer` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `Age` int(11) DEFAULT NULL,
  `Email` varchar(255) DEFAULT NULL,
  `Name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

若指定name属性名称:

@Table(name="CUSTOMERS")
@Entity
public class Customer {
    private Integer id;
    private String name;
    private String email;
    private int age;
    ......
}
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

则生成的数据库表DDL:

CREATE TABLE `customers` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `Age` int(11) DEFAULT NULL,
  `Email` varchar(255) DEFAULT NULL,
  `Name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

从上述两个例子中的数据库DDL中可以看出表名的变化

catalog属性:
catalog属性用于指定数据库实例名,一般来说persistence.xml文件中必须指定数据库url,url中将包含数据库实例

<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpa" />
  
  • 1
  • 1

当catalog属性不指定时,新创建的表将出现在url指定的数据库实例中
当catalog属性设置名称时,若数据库存在和指定名称一致的实例,新创建的表将出现在该实例中,

@Table(name="CUSTOMERS",catalog="hibernate")
@Entity
public class Customer {
    private Integer id;
    private String name;
    private String email;
    private int age;
    ......
}
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在数据库hibernate实例中将创建一张名叫customers的新表
若数据库不存在和指定名称一致的实例,则创建表失败,提示错误
ERROR: HHH000388: Unsuccessful: create table hiber.CUSTOMERS (ID integer not null auto_increment, Age integer, Email varchar(255), Name varchar(255), primary key (ID))
所以该属性一般不需要设置

schema属性:
作用与catalog属性作用一致,可自行测试

uniqueConstraints属性:
uniqueConstraints属性用于设定约束条件

@Table(name="CUSTOMERS",uniqueConstraints={@UniqueConstraint(columnNames={"name"})})
@Entity
public class Customer {
    private Integer id;
    private String name;
    private String email;
    private int age;
    ......
}
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

数据库DDL:

CREATE TABLE `customers` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `age` int(11) NOT NULL,
  `email` varchar(255) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `UK_kt165w8o83hunljcal4ufcmk9` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

uniqueConstraints={@UniqueConstraint(columnNames={“name”})} 表示name列的值不能重复

约束也可以是多列约束

@Table(name="CUSTOMERS",uniqueConstraints={@UniqueConstraint(columnNames={"name","email"})})
@Entity
public class Customer {
    private Integer id;
    private String name;
    private String email;
    private int age;
    ......
}
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

注意写法!
uniqueConstraints={@UniqueConstraint(columnNames={“name”,”email”}) 的意思是customer表中不同同时存在name+email的相同记录
比如:存在一条记录id=1,name=”张三”,email=”zhangsan@163.com”,那么就不能有另一个id表示的记录name=”张三”,email=”zhangsan@163.com”

数据库DDL:

CREATE TABLE `customers` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `Age` int(11) DEFAULT NULL,
  `Email` varchar(255) DEFAULT NULL,
  `Name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `UK_a4gmx9uvdyb7q19sf3seob2l8` (`Name`,`Email`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

uniqueConstraints是一个数组,可以指定多组约束:

uniqueConstraints={@UniqueConstraint(columnNames={"name","email"}),@UniqueConstraint(columnNames={"name","age"})} 
  
  • 1
  • 1

数据库DDL:

CREATE TABLE `customers` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `Age` int(11) DEFAULT NULL,
  `Email` varchar(255) DEFAULT NULL,
  `Name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `UK_a4gmx9uvdyb7q19sf3seob2l8` (`Name`,`Email`),
  UNIQUE KEY `UK_ag4xexpudoihe3uvpsl9yvhsg` (`Name`,`Age`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

总结:
1.当实体类名和数据库表名不一致时,name属性可以实现映射,及时表名一致,也推荐使用,提高程序的可读性
2.catalog和sechema属性一般不需要指定
3.uniqueConstraints属性一般也不需要指定,但是如有需要则可以指定


转载地址:http://blog.youkuaiyun.com/rickesy/article/details/50788140

如何用DeepSeek写年底工作总结?——从入门到精通的全流程指南 AI助手DeepSeek如何高效撰写工作总结 摘要:本文介绍如何利用DeepSeek智能AI助手高效完成工作总结写作。工作总结具有结构固定、语言规范、内容数据化三大特性,而DeepSeek的结构化生成、风格适配、数据整合和迭代优化四大核心能力与之完美匹配。文章提出"准备-搭架-填充-优化"四步工作法:1)精准输入岗位、时间范围等核心信息;2)先搭建逻辑清晰的提纲框架;3)分模块填充具体内容,突出数据与案例;4)通过风格润色和细节补充进行优化。通过合理运用多模态材料处理能力,DeepSee 阅读详情

相关推荐

SPSS回归分析(线性:一元(简单)和多重;非线性logistic)

SPSS线性回归分析回归分析一、线性模型(针对连续因变量,线性关系)(一)简单线性回归(一元线性回归)1、绘制散点图2、建立简单(一元)线性回归模型3、建立模型后,检查预测结果(二)多重回归分析1、绘制矩阵分布散点图(论文专用你懂的)2、建立多重回归模型point 1:自变量加入方法:逐步(步进)法3、建立模型后,检查预测结果二、非线性模型(将非线性问题转换为线性问题)1、logistic分析的回归模型1.1 建立回归模型1.2 利用回归模型进行预测 根据之前的学习,通过评价实验得到了主观数据, 通过 描述

weixin_44394352的博客 5万+

Hibernate的@Table注解

1.新建一个java project项目,里面新建一个lib文件夹,lib文件夹里面放置要用的一些jar文件,然后全部选中导入到项目中去。整体的框架如下图所示: 2.Students.java里面的代码如下图所示: [java] view plain copy  print? package entity;     

最有趣的编程 2562

80MHz~100MHz频谱分析仪设计

由理论分析可知,经过乘法器后输出的信号为频率为w1+w2的高频信号和w1-w2的低频信号,除了想要采样的直流信号外,最小的信号频率为100kHz。因此,经过一系列推导可以得到该滤波器的元件C1,C2,C3,R1,R2的近似值分别为:C1=2.36nF,C2=32.1nF,C3=1.07nF,R1=1.39k,R2=2.84k。AK,此时的频率w2即为被测信号的频率,待测信号源电压幅度为,因此为了能达到直流采样的设计,我们将本振源的频率输出范围做成80~110 MHz,提高了题目的频率要求。

qq_48771816的博客 5242

Hibernate,JPA 对象关系映射之简单映射策略

简单映射 ORM 对象关系的映射,现在已成为炙手可热的技术,深受广大开发人员的追捧。JPA 2.0 作为新的持久化规范,大有统一持久化市场的气势,并且简单易学,尤其是加上 JDK 5 中引入的 Annotation 注解的使用,使得 JPA 的使用更为简单,现在已经为持久化领域开发人员的首选。简单映射,是对象关系映射中最为简单的一种,也是最为基础的一种,学好简单映射是掌握继承映射

u011863709的专栏 755

maya中的几个热盒(空格、shift、w键)

maya中许多功能打包放进了不同的热盒中,让我们使用起来更加的便捷,熟练掌握后可以大大提升了建模速度。按下不同按键后鼠标不需要精确点到某个图标,往某个方向滑滑滑就打开了相应功能,非常的炫酷和迅猛。

m0_71983242的博客 1756

Cesium实战:全球海洋动态水面与自定义区域波浪效果实现

本文详细介绍了在Cesium中实现全球海洋动态水面与自定义区域波浪效果的实战方法。通过解析核心概念Primitive与Geometry,并深入讲解Water材质的关键参数调节,指导开发者快速创建逼真的动态海洋。文章重点阐述了如何利用多边形坐标定义不规则图形区域,实现精准的局部水域波浪效果,并提供了性能优化与视觉提升的实用技巧。

weixin_29256771的博客 501

Hibernate各个注解含义和使用讲解

一。实体Bean 每个持久化POJO类都是一个实体Bean, 通过在类的定义中使用@Entity 注解来进行声明。 声明实体Bean @Entity public class Flight implements Serializable { Long id; @Id public Long getId() { return id; } public void setId(Long id) { this.id = id; } } @Entity 注解将一个类声明为实体Bean, @...

洛阳泰山的博客 7265

备考路上的学习笔记:我的软考高级架构师复盘与更新计划

本专栏基于作者备考软考高级系统架构设计师的真实经验,分为考前突击、基础夯实、核心突破、案例实战和论文通关五大模块。内容涵盖计算机体系结构、操作系统、数据库等核心知识,提供案例解析和论文范文。作者承诺持续更新考纲内容、真题复盘及互动答疑,旨在帮助考生系统备考,将个人踩坑经验转化为实用指南,陪伴考生共同完成从知识碎片到体系构建的蜕变历程。

qq837993702的博客 2294

java获取Hibernate @Table, @Column注解值

一、操作方式1.0 加入pom依赖1.1 定义一个实体类1.2 获取类的信息。

justlpf的专栏 1279

【数字IC/FPGA】低功耗设计

低功耗设计方法功耗的类型低功耗设计方法静态低功耗技术多阈值工艺方法电源门控方法体偏置动态低功耗技术多电压域(Multi-Voltage Domain)预计算门控时钟门级优化技术毛刺的消除逻辑级优化物理级优化控制输入向量低功耗Soc系统的动态管理动态电压及频率调节技术低功耗操作系统存储器功耗控制总结 功耗的类型 CMOS电路中的功耗由两部分构成,第一部分为负载电容充放电时引起的功耗,称为动态功耗,另一部分为漏电流引起的功耗,称为静态功耗。其中动态功耗包括翻转功耗和短路功耗。翻转功耗是数字电路中信号翻转时电容充

qq_40268672的博客 3072

RH850从0搭建Autosar开发环境系列讲解 - 总目录

Davinci Autosar实战开发从0构建开发能力。OS,COM,DCM,BSWMM,ECUM,VLINK,XCP,MEMMAP等模块配置,带你熟悉运行的autosar代码,包括MICROSAR的启动运行,使用GreenHills生成运行的hex。

weixin_42412049的博客 1万+

Hibernate注解详解(超全面不解释)

一。实体Bean 每个持久化POJO类都是一个实体Bean, 通过在类的定义中使用 @Entity 注解来进行声明。 声明实体Bean @Entity public class Flightimplements Serializable {   Long id;   @Id   public Long getId() { return id; }   public vo

my_name_nb的博客 851

第十四节《OpenCascade集成Qt》

将 OpenCascade 与 Qt 集成是开发图形界面应用的常见需求。通过将 OpenCascade 的几何建模与 Qt 的图形用户界面(GUI)功能结合,可以创建强大而灵活的 CAD 或建模工具。OpenCascade 提供了与 Qt 的集成接口,允许你在 Qt 应用程序中嵌入 OpenCascade 的视图,执行几何操作,并与用户进行交互。以下是 OpenCascade 与 Qt 集成的详细步骤:首先,确保已安装 OpenCascade 和 Qt。你可以从 OpenCascade 官方网站或通过包管理

yumeiguo的博客 597

Hibenate注解大全

/**   *    * @author liuguangyi   * @content ejb3注解的API定义在javax.persistence.*包里面。   *    * 注释说明:   * @Entity —— 将一个类声明为一个实体bean(即一个持久化POJO类)   * @Id —— 注解声明了该实体bean的标识属性(对应表中的主键)。   * @Table —— 注解声明了该

Mr丶GUO 417

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Hibenate使用注解配置实体类的映射

实体类注解 实体类注解示例: @Entity @Table(name="user") public class User implements Serializable{ private String userId; private String userName; @Id @Column(name="userid") @GenericGenerator(name="generator", strategy = "uuid.hex") @GeneratedV

weixin_42949219的博客 831

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Hibenate-注解

注解 三类注解 注解含义作用 ORM标准规范JPA—per @Table(name=”“) 不管name一不一样,name都写出来吧,做为一种规范。User.java@Entity @Table(name = "User") // @Proxy(lazy=false) 默认true 。 public class User implements java.io.Seriali

1023

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

springboot hibenate 自定义注解校验复杂业务

@Getter @Setter public class CountryTypeView { private TargetType type; private List countryList; } @Getter @Setter public class AuthSettingView { @Size(min = 1, message = MessageKeys.USERS_SIZE) priv...

qq_37280992的博客 398

Hibenate的单向关联映射(注解版)

一:单向1-1关联 以老夫老妻为例子来说明一下,在中国以前是以丈夫主导地位,所以我这里以t_husband作为主表,t_wife作为从表 1.1:无连接表的 (1)首先创建实体类,然后使用注解表示出来两者的关联关系 import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence....

qq_38777614的博客 297

在Hibernate 4.3中如果使用了@Table注解,在获取session的时候会抛出如下异常解决办法...

使用hibernate4.3.2+javaEE6.0运行时会报如下错误 Exception in thread "main" java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index; at org.hibernate.cfg.annotations.EntityBi...

MartinDong 238

Hibenate映射属性

在默认情况下,被@Entityt修饰的持久化类的所有属性都会被映射到底层数据表。为了指定某个属性所映射的数据列的详细信息,如列名、列字段长度等,可以在实体类中使用@Column修饰该属性。使用该属性可指定如下的属性。 Hibernate同样允许使用@Access注解修饰该属性,用于单独改变Hibernate对该属性的访问策略。该@Access用于覆盖在持久上指定的@access注解。

owen_william的博客 1214

Hibernate中使用注解

Annotation在项目中的使用越来越多,同样hibernate中支持Annotation,如果在hibernate中使用注解,从而轻XML配置,从下面简单的小例子加以说明。 1、实体类Emp.java package com.yy.hibernate.model; import javax.persistence.Entity; import javax.persistence.Id;

残缺的孤独 7619

Hibernate的实体类注解详解

@Entity //继承策略。另一个类继承本类,那么本类里的属性应用到另一个类中 @Inheritance(strategy = InheritanceType.JOINED ) @Table(name="INFOM_TESTRESULT") public class TestResult extends IdEntity{}   1、@E

sunny_89的博客 2964

Hibernate实体类注解

Hibernate注解 1。@Entity(name="EntityName") 必须,name为可选,对应数据库中一的个表 2、@Table(name="",catalog="",schema="") 可选,通常和@Entity配合使用,只能标注在实体的class定义处,表示实体对应的数据库表的信息 name:可选,表示表的名称.默认地,表名和实体名称一致,只有在不一致

风火一回,一生不毁 593

Hibernate注解-类级别注解

Hibenate注解      使用注解的目的:为了简化繁琐的ORM映射文件(*.hbm)的配置      JPA 全程Java Persistence API      JPA注解是JAVAEE的规范和标准      JPA与Hibernate的关系:JPA是标准接口,Hibernate是实现,但是其功能是JPA的超集      Hibernate通过hibernate-annotat

wojiaohuangyu的专栏 5512

Hibenate 课堂笔记

这是我学Hibernate的课堂笔记,整理出来供大家学习,其中不正确的地方,还请指正!共同学习!

Lincoln的专栏 1010

hibernate注解的方式实现映射

表的映射 //代表此类参与ORM映射,此注解必须要有 @Entity //代表user这个类映射了一个表xx_user,如果表名和类名一样,此注解可以省略 @Table(name="xx_user") public class User { //主键,此注解必须要有 @Id //数据库表中主键列名为id,如果实体类属性名和列名相同,此注解可以省略 @Col...

小小码农的博客 541
上一篇: Hibernate注解
下一篇: Hibernate @Column、columnDefinition等简介
elementf
博客等级 码龄14年 30粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值