`
taiwei.peng
  • 浏览: 228137 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Hibernate 注解映射联合主键的三种方式

    博客分类:
  • java
阅读更多

联合主键用Hibernate注解映射方式主要有三种:
第一、将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,再将该类注解为@Embeddable,最后在主类中(该类不包含联合主键类中的字段)保存该联合主键类的一个引用,并生成set和get方法,并将该引用注解为@Id

第二、将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,最后在主类中(该类不包含联合主键类中的字段)保存该联合主键类的一个引用,并生成set和get方法,并将该引用注解为@EmbeddedId

第三、将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并要重写equals和hashcode.最后在主类中(该类包含联合主键类中的字段)将联合主键字段都注解为@Id,并在该类上方将上这样的注解:@IdClass(联合主键类.class)

 

使用方式:

1、model类:

 

  1. @Entity  
  2. @Table(name="JLEE01")  
  3. public class Jlee01 implements Serializable{  
  4.   
  5.     private static final long serialVersionUID = 3524215936351012384L;  
  6.     private String address ;  
  7.     private int age ;  
  8.     private String email ;  
  9.     private String phone ;  
  10. @Id
  11.     private JleeKey01 jleeKey ; 

主键类:JleeKey01.java

 

 

  1. @Embeddable  
  2. public class JleeKey01  implements Serializable{  
  3.   
  4.     private static final long serialVersionUID = -3304319243957837925L;  
  5.     private long id ;  
  6.     private String name ;  
  7.     /** 
  8.      * @return the id 
  9.      */  
  10.     public long getId() {  
  11.         return id;  
  12.     }  
  13.     /** 
  14.      * @param id the id to set 
  15.      */  
  16.     public void setId(long id) {  
  17.         this.id = id;  
  18.     }  
  19.     /** 
  20.      * @return the name 
  21.      */  
  22.     public String getName() {  
  23.         return name;  
  24.     }  
  25.     /** 
  26.      * @param name the name to set 
  27.      */  
  28.     public void setName(String name) {  
  29.         this.name = name;  
  30.     }  
  31.   
  32.     @Override  
  33.     public boolean equals(Object o) {  
  34.         if(o instanceof JleeKey01){  
  35.             JleeKey01 key = (JleeKey01)o ;  
  36.             if(this.id == key.getId() && this.name.equals(key.getName())){  
  37.                 return true ;  
  38.             }  
  39.         }  
  40.         return false ;  
  41.     }  
  42.       
  43.     @Override  
  44.     public int hashCode() {  
  45.         return this.name.hashCode();  
  46.     }  
  47.       
  48. }  

2、model类:

 

 

  1. @Entity  
  2. @Table(name="JLEE02")  
  3. public class Jlee02 {  
  4.   
  5.     private String address ;  
  6.     private int age ;  
  7.     private String email ;  
  8.     private String phone ;  
  9.     @EmbeddedId
  10.     private JleeKey02 jleeKey ;  

 

主键类:JleeKey02.java

普通java类即可。

3、model类:

 

  1. @Entity  
  2. @Table(name="JLEE03")  
  3. @IdClass(JleeKey03.class)  
  4. public class Jlee03 {  
  5.     @Id
  6.     private long id ;
  7.     @Id  
  8.     private String name ;  

主键类:JleeKey03.java

分享到:
评论

相关推荐

    Hibernate注解映射联合主键

    联合主键用Hibernate注解映射方式主要有三种: 第一、将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,再将该类注解为@Embeddable,最后在主类中(该类不包含联合主键...

    Hibernate注解

    * @GenericGenerator —— 注解声明了一个hibernate的主键生成策略。支持十三种策略。该注解有如下属性 * name 指定生成器名称 * strategy 指定具体生成器的类名(指定生成策略)。 * parameters 得到strategy指定的...

    Hibernate注释大全收藏

    上述实体映射到数据库中的时候对应 Order 实体Bean, 其具有 id, lastUpdate, lastUpdater 三个属性。如果没有@MappedSuperclass 注解,则父类中属性忽略,这是 Order 实体 Bean 只有 id 一个属性。 映射实体Bean的...

    Hibernate实战(第2版 中文高清版)

     6.3 用注解映射集合   6.3.1 基本的集合映射   6.3.2 排序集合和有序集合   6.3.3 映射嵌入式对象的集合   6.4 映射父/子关系   6.4.1 多样性   6.4.2 最简单的可能关联   6.4.3 使关联双向   ...

    Hibernate 中文 html 帮助文档

    9.1. 三种策略 9.1.1. 每个类分层结构一张表(Table per class hierarchy) 9.1.2. 每个子类一张表(Table per subclass) 9.1.3. 每个子类一张表(Table per subclass),使用辨别标志(Discriminator) 9.1.4. 混合使用...

    最全Hibernate 参考文档

    9.1. 三种策略 9.1.1. 每个类分层结构一张表(Table per class hierarchy) 9.1.2. 每个子类一张表(Table per subclass) 9.1.3. 每个子类一张表(Table per subclass),使用辨别标志(Discriminator) 9.1.4. 混合使用...

    hibernate 体系结构与配置 参考文档(html)

    三种策略 9.1.1. 每个类分层结构一张表(Table per class hierarchy) 9.1.2. 每个子类一张表(Table per subclass) 9.1.3. 每个子类一张表(Table per subclass),使用辨别标志(Discriminator) 9.1.4. 混合使用...

    Hibernate教程

    10.1. 三种策略 10.1.1. 每个类分层结构一张表(Table per class hierarchy) 10.1.2. 每个子类一张表(Table per subclass) 10.1.3. 每个子类一张表(Table per subclass),使用辨别标志(Discriminator) 10.1.4. ...

    Hibernate3的帮助文档

    10.1. 三种策略 10.1.1. 每个类分层结构一张表(Table per class hierarchy) 10.1.2. 每个子类一张表(Table per subclass) 10.1.3. 每个子类一张表(Table per subclass),使用辨别标志(Discriminator) 10.1.4. ...

    hibernate3.04中文文档.chm

    10.1. 三种策略 10.1.1. 每个类分层结构一张表(Table per class hierarchy) 10.1.2. 每个子类一张表(Table per subclass) 10.1.3. 每个子类一张表(Table per subclass),使用辨别标志(Discriminator) 10.1.4. ...

    Hibernate3+中文参考文档

    9.1. 三种策略 9.1.1. 每个类分层结构一张表(Table per class hierarchy) 9.1.2. 每个子类一张表(Table per subclass) 9.1.3. 每个子类一张表(Table per subclass),使用辨别标志(Discriminator) 9.1.4. 混合使用...

    hibernate 框架详解

    三种策略 10.1.1. 每个类分层结构一张表(Table per class hierarchy) 10.1.2. 每个子类一张表(Table per subclass) 10.1.3. 每个子类一张表(Table per subclass),使用辨别标志(Discriminator) 10.1.4. 混合...

    Hibernate参考文档

    9.1. 三种策略 9.1.1. 每个类分层结构一张表(Table per class hierarchy) 9.1.2. 每个子类一张表(Table per subclass) 9.1.3. 每个子类一张表(Table per subclass),使用辨别标志(Discriminator) 9.1.4. 混合使用...

    Spring.3.x企业应用开发实战(完整版).part2

    10.5 联合军种作战的混乱 10.5.1 Spring事务管理器的应对 10.5.2 Hibernate+Spring JDBC混合框架的事务管理 10.6 特殊方法成漏网之鱼 10.6.1 哪些方法不能实施Spring AOP事务 10.6.2 事务增强遗漏实例 10.7 数据连接...

    Spring3.x企业应用开发实战(完整版) part1

    10.5 联合军种作战的混乱 10.5.1 Spring事务管理器的应对 10.5.2 Hibernate+Spring JDBC混合框架的事务管理 10.6 特殊方法成漏网之鱼 10.6.1 哪些方法不能实施Spring AOP事务 10.6.2 事务增强遗漏实例 10.7 数据连接...

    springmybatis

    MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个...

    JAVA上百实例源码以及开源项目

     通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 ...

    JAVA上百实例源码以及开源项目源代码

    设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后...

Global site tag (gtag.js) - Google Analytics