Annotation注解归总&ID生成策略&联合主键及hql中的条件查询写法
来源:互联网 发布:广电网络中山分公司 编辑:程序博客网 时间:2024/06/06 04:33
Annotation中ID生成策略:
1. 手动指定;没说的之前写过,xml和属性都使用过;@Id
2. 使用 Generator 生成器;
Generator 有很多值:常用的有native , identity, sequence,uuid(id类型 String) ;
使用Generarot帮我们自动生成ID:
@GeneratedValue
注视在 @Id下:
@Id
@GeneratedValue
默认策略 auto/native ;如果你使用MySQL,那么自动使用 auto_increment
指定ID生成策略 @GeneratedValue
@GeneratedValue(strategy=GenerationType.AUTO) @GeneratedValue(strategy=GenerationType.IDENTITY) @GeneratedValue(strategy=GenerationType.SEQUENCE) @GeneratedValue(strategy=GenerationType.TABLE)
这里要注意要使用数据库支持的,比如这里MySQL我们使用IDENTITY ;
GenerationType.TABLE 主要用于跨数据库平台,很少用,标记下;
在使用Annotation使用联合主键有三种方式:
1. 将你的多个Primary Key放置一个新类中(主键类),并且用注解@Embeddable 声明主键类即可;实体类使用注解@Id指向主键类
2. 将你的多个Primary Key放置一个新类中(主键类),实体类使用注解@EmbeddedId指向主键类即可;
3. 实体类中在所有需要设置为主键的属性上都加入@Id注解,然后在注解实体类下面添加一个如下注解:
@IdClass(value=XXX.class) 这里的XXX对应你的主键类名
3种之中最适合的书写习惯的是第3种,但是第二种比较方便,也很常用;
但是不管哪一种使用方法,对于使用联合主键而言,你的主键类都需要使用Serializable接口,并且重写equals和hashCode函数;
Serializable接口 原因是:序列化就是为了能暂存一些对象到硬盘中;
重写equals函数 , 原因是:内存中的对象区分;
重写hashCode 函数, 原因是:根据哈希码快速索引
主键类
- package com.tyzy.bean.resource;
- import java.io.Serializable;
- import javax.persistence.Embeddable;
- @Embeddable
- public class Primaryid implements Serializable{
- private static final long serialVersionUID = -3449712581842566658L;
- private Long rid;
- private Long sid;
- public Long getRid() {
- return rid;
- }
- public void setRid(Long rid) {
- this.rid = rid;
- }
- public Long getSid() {
- return sid;
- }
- public void setSid(Long sid) {
- this.sid = sid;
- }
- }
与数据库相关联的表类
- package com.tyzy.bean.resource;
- import java.io.Serializable;
- import javax.persistence.EmbeddedId;
- import javax.persistence.Entity;
- import javax.persistence.Table;
- @Entity
- @Table(name="TResourceIndustry") //类名与表名相同则不需要指定
- public class ResourceIndustry implements Serializable{
- private static final long serialVersionUID = -4410748581764041711L;
- @EmbeddedId //指定主键为主键类
- private Primaryidprimaryid ;
- public Primaryid getPrimaryid () {
- returnprimaryid ;
- }
- public void setPrimaryid (Primaryidprimaryid ) {
- this.primaryid =primaryid ;
- }
- }
需要条件查询时用到主键中的属性时的Hql语句:
String hql="select * from TResourceIndustry where primaryid.sid=? and primaryid.rid=?";
- Annotation注解归总&ID生成策略&联合主键及hql中的条件查询写法
- Hibernate-Annotation常用的注解归总&&ID的生成策略&&联合主键
- 【Hibernate框架开发之四】Hibernate-Annotation常用的注解归总&&ID的生成策略&&联合主键
- 【Hibernate框架开发之四】Hibernate-Annotation常用的注解归总&&ID的生成策略&&联合主键
- id生成策略-(联合主键xml annotation)-5
- Hibernate ID生成策略/联合主键解决方案
- ID生成策略:联合主键xml
- hibernate id 联合主键生成策略
- hibernate--ID生成策略_联合主键
- Hibernate的ID生成策略/联合主键解决方案
- Hibernate的ID生成策略/联合主键解决方案
- Hibernate中id的table生成策略之联合主键
- Hibernate的ID生成策略/联合主键解决方案
- Hibernate学习笔记(三)----ID生成策略、联合主键
- Hibernate的ID生成策略/联合主键解决方案
- Hibernate之ID生成策略—联合主键
- 【hibernate框架】用Annotation注解表示id生成策略
- 注解 主键生成策略
- Netty介绍
- Android--------在fragment滚动播放
- Protobuf-swift 集成小结 韩俊强的博客
- TCP BBR拥塞控制算法解析
- CTeX 中 MiKTeX 太旧,无法更新宏包解决方案
- Annotation注解归总&ID生成策略&联合主键及hql中的条件查询写法
- HDU6053 TrickGCD(2017多校第2场)
- linux安装jdk mysql tomcat之部署项目
- 图像处理基本概念(模板,卷积运算)
- 原型和作用域
- <Android 基础(三十七)> 自定义ViewPagerIndicator
- 树链剖分小结板子
- iDesktop点数据集构建DEM时三种插值方式的选择
- 深度学习笔记---规范化