`

4.hibernate联合主键,jpa映射

 
阅读更多
package com.bjsxt.hibernate;

public enum Gender {
	MALE, FEMALE
}



package com.bjsxt.hibernate;

import javax.persistence.Embeddable;


public class TeacherPK implements java.io.Serializable{
	private int id;
	private String name;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	@Override
	public boolean equals(Object o) {
		if(o instanceof TeacherPK) {
			TeacherPK pk = (TeacherPK)o;
			if(this.id == pk.getId() && this.name.equals(pk.getName())) {
				return true;
			}
		}
		return false;
	}
	
	@Override
	public int hashCode() {
		return this.name.hashCode();
	}
}



package com.bjsxt.hibernate;

import java.util.Date;

import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.IdClass;
import javax.persistence.SequenceGenerator;

import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

@Entity
@javax.persistence.TableGenerator(
	    name="Teacher_GEN",
	    table="GENERATOR_TABLE",
	    pkColumnName = "pk_key",
	    valueColumnName = "pk_value",
	    pkColumnValue="Teacher",
	    allocationSize=1
	)

@SequenceGenerator(name="teacherSEQ", sequenceName="teacherSEQ_DB")
@IdClass(TeacherPK.class)
public class Teacher {
	//private TeacherPK pk;
	private int id;
	private String name;
	private String title; 
	private String yourWifeName;
	private Date birthDate;
	private boolean good;
	private Gender gender;
	
	@Enumerated(EnumType.STRING)
	public Gender getGender() {
		return gender;
	}
	public void setGender(Gender gender) {
		this.gender = gender;
	}
	public boolean isGood() {
		return good;
	}
	public void setGood(boolean good) {
		this.good = good;
	}
	@Transient
	public String getYourWifeName() {
		return yourWifeName;
	}
	public void setYourWifeName(String yourWifeName) {
		this.yourWifeName = yourWifeName;
	}
	@Id
	@GeneratedValue(strategy=GenerationType.TABLE, generator="Teacher_GEN")
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	@Id
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	@Temporal(TemporalType.TIME)
	public Date getBirthDate() {
		return birthDate;
	}
	public void setBirthDate(Date birthDate) {
		this.birthDate = birthDate;
	}
	
	/*@EmbeddedId
	public TeacherPK getPk() {
		return pk;
	}
	public void setPk(TeacherPK pk) {
		this.pk = pk;
	}*/
}

分享到:
评论

相关推荐

    学习hibernate必读,JPA2新特征和JPA2映射的神秘之旅。

    在IT行业中,Hibernate是一款广泛应用的关系对象映射框架,它极大地简化了Java开发人员与数据库交互的工作。而JPA(Java Persistence API)是Java平台上的一个标准,为持久化提供了统一的API,使得开发者可以轻松地...

    jpa.rar_Java JPA

    Java 持久化API(Java Persistence API,简称JPA)是Java开发人员用来管理关系数据库的对象/关系映射(ORM)工具。JPA通过提供一套标准接口和API,简化了在Java应用中存储、查询和管理数据的过程,使得开发者可以...

    Java.Persistence.with.Hibernate.2nd.Edition 源代码

    8. **Inheritance Mapping**: Hibernate支持多种继承映射策略,如单表继承、联合继承和表-per-class,可以根据业务需求选择合适的映射方式。 9. **Lazy Loading & Eager Loading**: Hibernate提供了懒加载和急加载...

    Java持久性和休眠指南(S. Hennebrueder)Guide to Java Persistence and Hibernate (S. Hennebrueder)

    Hibernate提供多种映射类型,包括基本映射、主键映射、关系映射、组合映射、继承映射等。开发者需要根据应用场景选择合适的映射策略。 ### 9. 基本映射策略 基本映射策略包括注解(Annotation)映射和XML映射两种...

    SpringMVC+Hibernate+Jpa Maven环境搭建

    在IT行业中,构建高效、可维护的Web应用是至关重要的,SpringMVC、Hibernate和JPA作为Java领域中三大主流框架,常常被联合使用来实现这一目标。本篇将详细介绍如何利用Maven来搭建整合SpringMVC、Hibernate和JPA的...

    Hibernate注释大全收藏

    通过上述内容可以看出,Hibernate提供了丰富的注解机制来简化实体Bean的声明、属性的映射、表的定义、主键和外键的定义、关联关系的建立、查询的定义等。这些注解极大地提高了开发效率,并有助于构建清晰、灵活且...

    传智播客JPA学习笔记.pdf

    日期_枚举等字段类型的JPA映射** JPA提供了对不同数据类型的映射,如日期类型(@Temporal),枚举类型(@Enumerated),甚至自定义类型,通过Converter接口可以自定义数据类型转换。 **6. 大数据字段映射与字段...

    10_hibernate.rar

    - 联合主键:多个字段共同组成主键。 - 继承映射:支持单表继承、多表继承等多种模式。 - 支持关联映射:一对一、一对多、多对一、多对多等各种关联关系。 - 支持延迟加载:只在真正需要时才加载关联对象,提高性能...

    JPA讲解视频

    8. **继承映射(Inheritance Mapping)**:JPA支持单表继承、联合继承和表格分层等策略,使你可以设计复杂的对象模型。 9. **懒加载(Lazy Loading)**:默认情况下,JPA实现如Hibernate支持懒加载,即关联的对象只...

    Hibernate开发指南.pdf

    11. **联合实体映射**:讲解如何处理复杂的数据结构,如联合主键和复合实体。 12. **多态性与继承**:介绍如何在Hibernate中处理类继承关系,以及多态查询的实现。 13. **JPA集成**:如果指南也涵盖了JPA(Java ...

    jpa学习总结,pdf类型的,详细介绍了jpa的应用

    - **定义与实现**:解释联合主键的概念,并展示其在JPA中的实现方式。 通过以上知识点的梳理,我们可以看出JPA不仅是一种强大的持久层框架,还具有高度的灵活性和扩展性,能够满足不同场景下的需求。同时,由于其...

    传智播客李勇hibernate

    - 单表继承、联合表继承、子类表继承,根据需求选择合适的映射策略。 7. **集合映射**: - List、Set、Map等集合类型与数据库表的映射,处理关联关系的集合操作。 8. **懒加载**: - 提高性能,延迟加载关联...

    Springboot+JPA(demo)

    在本文中,我们将深入探讨如何使用Spring Boot框架与Java Persistence API (JPA)结合,特别是通过Hibernate实现数据库的增删改查操作,并进行简单的两表联合查询。首先,我们需要了解Spring Boot的基础,然后掌握JPA...

    hibernate所有开发包

    3. Inheritance:Hibernate支持多种继承映射策略,如单表继承、联合继承和表-per-hierarchy。 四、关联映射 1. OneToMany/ManyToOne:一对多和多对一关系映射,使用@OneToMany和@ManyToOne注解,@JoinColumn定义...

    马士兵hibernate学习笔记(原版)

    - **联合主键**:在实体类中使用多个字段作为主键的情况,需注意其配置方式。 ##### 5. Hibernate核心开发接口介绍 - **核心接口**: - `Configuration`:负责加载配置文件。 - `SessionFactory`:创建`Session`...

    JPA主键策略(针对数据库自增字段重置后无效检查项)

    在使用这个策略时,JPA会将主键的生成工作交由数据库完成,hibernate 不会介入。这意味着,数据库将负责生成主键,而不是hibernate。这种策略适用于大多数情况,因为它可以确保主键的唯一性和连续性。 uuid uuid是...

    hibernate 3.6 中文 chm

    10. **一对多、多对一、一对一和多对多关系映射**:Hibernate支持多种关联映射,包括集合映射,如List、Set、Map等,以及复合主键的处理。 11. **继承映射**:在Java中,子类可以继承父类。在Hibernate中,这种继承...

    jPA+hibernate

    **联合主键(Composite Primary Key)**在JPA中,当一个实体的主键由两个或更多个字段组成时,我们称之为联合主键。`JPACompositePK`示例将说明如何使用`@Embeddable`和`@EmbeddedId`注解来定义这样的主键。 在这些...

Global site tag (gtag.js) - Google Analytics