`

Annotation对Hibernate中联合主键定义

阅读更多
public class User {

private int id;

private String name;

private String address;

public int getId() {

return id;

}

public String getName() {

return name;

}

public String getAddress() {

return address;

}

public void setId(int id) {

this.id = id;

}

public void setName(String name) {

this.name = name;

}

public void setAddress(String address) {

this.address = address;

}

}

在如上类中假设需要定义一个联合主键 id,name,在hibernate中利用注解映射方法有如下三种:

1、将组件类注解为@Embeddable,并将实体类中组件的注解为@Id

      首先需要抽象出一个组件类,并将其注解为可嵌入式的Embeddedable在User中进行引用

@Embeddable

public class UserPk implements Serializable {

private static final long serialVersionUID = 1L;

private int id;

private String name;

public int getId() {

return id;

}

public String getName() {

return name;

}

public void setId(int id) {

this.id = id;

}

public void setName(String name) {

this.name = name;

}

}

其次要在实体类中将组件属性注解为@ID

@Entity

public class User {

private UserPk userPk;

private String address;

@Id

public UserPk getUserPk() {

return userPk;

}

public String getAddress() {

return address;

}

public void setUserPk(UserPk userPk) {

this.userPk = userPk;

}

public void setAddress(String address) {

this.address = address;

}

}

2、将组件的属性注解为@EmbeddedId

首先需要抽象出一个组件类,在User中进行引用

public class UserPk implements Serializable {

private static final long serialVersionUID = 1L;

private int id;

private String name;

public int getId() {

return id;

}

public String getName() {

return name;

}

public void setId(int id) {

this.id = id;

}

public void setName(String name) {

this.name = name;

}

}

其次需要在实体类中对组件属性注解为嵌入式的ID,即:@EmbeddedId

@Entity

public class User {

private UserPk userPk;

private String address;

@EmbeddedId

public UserPk getUserPk() {

return userPk;

}

public String getAddress() {

return address;

}

public void setUserPk(UserPk userPk) {

this.userPk = userPk;

}

public void setAddress(String address) {

this.address = address;

}

}

3、将类注解为@IdClass,并将该实体中所有属于主键属性都注解为@Id

抽象出组件类

public class UserPk implements Serializable {

private static final long serialVersionUID = 1L;

private int id;

private String name;

public int getId() {

return id;

}

public String getName() {

return name;

}

public void setId(int id) {

this.id = id;

}

public void setName(String name) {

this.name = name;

}

}

实体类

@Entity

@IdClass(value = UserPk.class)

public class User {

private int id;

private String name;

private String address;

@Id

public int getId() {

return id;

}

@Id

public String getName() {

return name;

}

public String getAddress() {

return address;

}

public void setId(int id) {

this.id = id;

}

public void setName(String name) {

this.name = name;

}

public void setAddress(String address) {

this.address = address;

}

}

分享到:
评论

相关推荐

    Hibernate一对一单向外键关联 (联合主键annotation)

    通过这种方式,你可以实现Hibernate中一对一单向外键关联及联合主键的配置。这使得两个实体间的关系更加明确,同时也方便了数据的管理和操作。在实际项目中,这样的设计可以提高数据的完整性和一致性。

    Hibernate Annotation 学习笔记

    Annotation 在 Hibernate 中扮演着关键角色,它们为数据库对象提供了元数据,使得无需XML配置就能实现数据持久化。本笔记将深入探讨Hibernate Annotation的相关知识点。 1. **实体类与@Entity** - `@Entity` 注解...

    Hibernate Annotation应用

    2. **主键定义**:每个实体通常都有一个主键,我们可以使用`@Id`注解来标记主键字段。默认情况下,Hibernate会使用`GenerationType.AUTO`策略生成主键,但也可以自定义生成策略,如`GenerationType.IDENTITY`或`...

    hibernate_annotation

    在Hibernate中,Annotation是用于替代传统XML配置的一种方式,提供了更加直观、简洁的代码表示。本文将深入探讨Hibernate Annotation,帮助读者理解和掌握这一强大的工具。 一、Hibernate Annotation基础 1.1 ...

    hibernate-annotation-3.2.1

    而Hibernate的注解版本,特别是3.2.1版本,更是其发展历程中的一个重要里程碑,它使得开发者能够通过在Java类和属性上添加注解,实现对数据库的映射,从而减少了XML配置文件的依赖。这篇文档将详细介绍Hibernate注解...

    Hibernate笔记 马士兵

    第1课 课程内容 6 第2课 Hibernate UML图 6 第3课 风格 7 第4课 资源 7 第5课 环境准备 7 ...三、 联合主键 24 1、xml方式 24 2、annotation方式 27 第14课 Hibernate核心开发接口(重点) 29 ........

    Hibernate annotation 详解

    在实体类中,我们需要定义主键字段,通常使用`@Id`注解。例如: ```java @Entity public class User { @Id private Long id; // ... } ``` `@GeneratedValue` 可以与`@Id`结合使用,自动管理主键的生成策略,如...

    hibernate所有开发包

    包括Hibernate核心库、JTA事务管理、JPA规范实现等,使用这些jar包,开发者可以轻松实现Java项目中的ORM功能,利用Hibernate的强大功能进行数据库操作,同时支持Annotation配置,简化了开发过程。

    Hibernate 中文 html 帮助文档

    5.5.2. 使用 JDK 5.0 的注解(Annotation) 5.6. 数据库生成属性(Generated Properties) 5.7. 辅助数据库对象(Auxiliary Database Objects) 6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent collections) ...

    hibernate3.5中文参考

    10. **一对多(One-to-Many)、多对一(Many-to-One)、多对多(Many-to-Many)关系映射**:这些映射关系在实际业务中很常见,Hibernate提供了灵活的配置方式来处理这些关联。 11. **继承映射**:Hibernate支持单表...

    Hibernate关联关系的CRUD和集合映射(annotation)

    5. **@JoinTable**:在多对多关系中,用于定义中间表的详细信息,包括联合主键等。 ### 集合映射的加载策略 Hibernate提供了多种加载策略,例如: - **EAGER**:集合会在主对象加载时一起加载,适合小规模数据。 ...

    hibernate注解中英文版

    - `@Inheritance`:定义继承策略,如SINGLE_TABLE(单表继承)、JOINED(联合继承)和TABLE_PER_CLASS(每类一张表)。 - `@JoinColumn`:用于指定外键列的名称和属性。 - `@Transient`:标记一个属性不映射到数据库...

    马士兵hibernate笔记

    第13课专注于ID主键的生成策略,包括Xml方式和AnnotateOn方式,如AUTO、IDENTITY、SEQUENCE、TABLE等策略,并讨论了联合主键的配置。 第14课是核心内容,介绍了Hibernate的主要开发接口,如`Configuration...

    Hibernate annotations大全

    1. Hibernate Annotation 概述 Hibernate Annotations是Hibernate框架中的一种元数据表示方式,它允许开发者在Java实体类上直接添加注解,替代传统的XML配置文件来描述对象关系映射(ORM)。这种方式使得ORM配置更加...

    Hibernate ORM 5.2.7.Final User Guide

    - **字段映射**: @Id、@GeneratedValue、@Column等注解的使用,定义主键生成策略和字段属性。 - **关联映射**: @OneToOne、@OneToMany、@ManyToOne、@ManyToMany等,处理对象之间的关系。 **4. Session操作** - **...

    Hibernate数据访问技术大全

    最后,书中可能还会讨论一些高级主题,如Hibernate的联合映射(Association Mapping)、继承映射(Inheritance Mapping)、复合主键(Composite Key)以及自定义类型(Custom Types)。这些特性允许开发者构建更复杂...

    Hibernate src

    例如,`@Entity`表示一个Java类对应数据库中的一个表,`@Id`标识主键,`@GeneratedValue`定义主键生成策略等。 3. **SessionFactory与Session**:在Hibernate中,SessionFactory是线程安全的,负责创建Session对象...

    Hibernate学习笔记

    - **联合主键**:当一个实体的主键由多个字段组成时,可以通过XML或Annotation方式指定联合主键。 #### Hibernate核心开发接口 - **Configuration/AnnotationConfiguration**:负责读取配置文件,初始化...

    最全Hibernate 参考文档

    1. 在Tomcat中快速上手 1.1. 开始Hibernate之旅 1.2. 第一个持久化类 1.3. 映射cat 1.4. 与Cat同乐 1.5. 结语 2. 架构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 3. 配置 ...

Global site tag (gtag.js) - Google Analytics