联合主键:一般是两个或者以上的字段来标示主键,在JPA中把所有的联合主键的字段放在同一个类中。 那么Java类的设计:专门设计一个类,用来存放联合主键字段,而且该类只能存放联合主键字段。 【联合主键类设计】 package 联合主键; import java.io.Serializable; import javax.persistence.Embeddable; /** * 联合主键类(航线的联合主键类,连个点为一线) * @author 青山 * @date 2014年10月20日 * @file name: AirWayPK.java * @Desc 本类只能存放联合主键字段,类中字段的定义也只能定义用作主键的字段 * JPA联合主键规范:1. 必须要有无参构造方法 * 2. 必须实现serializable接口 * 3. 必须重写hashCode()和equals()方法 * 本类作为实体类的主键类,包含了两个具体的主键字段 */ //该注解用在实体里面,告诉JPA实现产品我使用复合主键类的属性来 @Embeddable //英文翻译:嵌入的 我理解为将本类嵌入到实体类中做主键使用 public class AirWayPK implements Serializable{ private static final long serialVersionUID = 2307150430118066404L; private String startPoint; private String endPoint; public AirWayPK(String startPoint, String endPoint) { super(); this.startPoint = startPoint; this.endPoint = endPoint; } public AirWayPK() { super(); // TODO Auto-generated constructor stub } public String getStartPoint() { return startPoint; } public void setStartPoint(String startPoint) { this.startPoint = startPoint; } public String getEndPoint() { return endPoint; } public void setEndPoint(String endPoint) { this.endPoint = endPoint; } @Override public int hashCode() { final int prefix = 33; int result = 2; result = prefix * result+(startPoint==null ? 0 : startPoint.hashCode()); result = prefix * result+(endPoint==null ? 0 : endPoint.hashCode()); return result; } @Override public boolean equals(Object obj) { if(this == obj) return true; if(obj==null) return false; if(this.getClass() != obj.getClass()) return false; AirWayPK aw = (AirWayPK)obj; if(endPoint==null){ if(aw.getEndPoint()!=null){ return false; } }else if(!endPoint.equals(aw.getEndPoint())){ return false; } if(startPoint==null){ if(aw.getStartPoint()!=null){ return false; } }else if(!startPoint.equals(aw.getStartPoint())){ return false; } return true; } } 【实体类设计】 package 联合主键; import javax.persistence.Column; import javax.persistence.EmbeddedId; import javax.persistence.Entity; import javax.persistence.Table; /** * * @author 青山 * @date 2014年10月20日 * @file name: AirWay.java * * 表设计: * CREATE TABLE `world`.`t_airline` ( `startpoint` VARCHAR(40) NOT NULL, `endpoint` VARCHAR(40) NOT NULL, `linename` VARCHAR(45) NULL, PRIMARY KEY (`startpoint`, `endpoint`)); * */ @Entity @Table(name="t_airline") public class AirWay { @EmbeddedId //标注awid为实体的标识符 private AirWayPK awid; //这里使用联合主键类来标示航线的主键 @Column(name="linename") private String airLineName; public AirWay() { super(); // TODO Auto-generated constructor stub } public AirWay(AirWayPK awid, String airLineName) { super(); this.awid = awid; this.airLineName = airLineName; } public AirWayPK getAwid() { return awid; } public void setAwid(AirWayPK awid) { this.awid = awid; } public String getAirLineName() { return airLineName; } public void setAirLineName(String airLineName) { this.airLineName = airLineName; } } 【测试】 package 联合主键; import javax.persistence.EntityManager; import javax.persistence.EntityTransaction; import util.JPAManagerFactory; public class TestCompositePK { public static void main(String[] args) { EntityManager manager = JPAManagerFactory.getMFInstance().getManager(); EntityTransaction t = manager.getTransaction(); t.begin(); AirWayPK pk = new AirWayPK("CHENGDU","SHANGHAI"); AirWay aw = new AirWay(pk,"成都飞上海"); manager.persist(aw); t.commit(); manager.close(); } }
相关推荐
赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...
赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...
hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码 hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码
`hibernate-jpa-2.1-api-1.0.0.final.jar`是Hibernate对JPA 2.1规范的实现库,它使得开发者能够使用Hibernate的高效功能同时遵循JPA规范。 **1. Hibernate与JPA的关系** Hibernate最初作为一个独立的ORM框架,后来...
hibernate-jpa-2.0-api-1.0.1.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final-sources.jar hibernate jpa 源代码
hibernate-jpa-2.1-api-1.0.0.Final.jar官方下载,请放心使用
java.lang.NoClassDefFoundError: javax/persistence/spi/ProviderUtil 或javax/persistence/entitylistener问题
java运行依赖jar包
本篇文章将重点围绕“hibernate-jpa-2.1-api-1.0.0.final-sources.jar.zip”这一压缩包,深入解析Hibernate对JPA 2.1 API的实现,以期帮助读者深入理解其内部机制。 JPA(Java Persistence API)是Java平台上的一个...
这个源码包"hibernate-jpa-2.0-api-1.0.1.Final-sources"包含了完整的源代码,可以帮助我们深入了解其内部机制,从而更好地应用在实际项目中。 1. **JPA简介**:Java Persistence API(JPA)是Java平台上的一个标准...
当使用该策略时,JPA会根据后端数据库的不同特性自动选择合适的主键生成方式。例如,在MySQL中,如果表的主键是自增字段,则使用数据库自身的自增功能;而在Oracle中,则会使用序列(sequence)机制。 - **示例代码*...
使用Querydsl-JPA-Codegen,开发者只需配置好元数据源,便能自动化地生成与实体类对应的Q类,这些Q类使得复杂查询的编写变得简洁易懂。同时,Querydsl支持静态导入,使得查询代码更具有可读性,对于大型项目来说,这...
**标题详解:** "hibernate-jpa-2.1-api 1.0.0.Final API" 这个标题指的是Hibernate对Java Persistence API (JPA) 2.1规范的实现,版本为1.0.0.Final。Hibernate是Java领域中最受欢迎的对象关系映射(ORM)框架之一...
本项目"springboot-jpa-activiti-bootstrap-master"正是一个将这三个技术进行深度整合的实例,旨在帮助开发者理解并掌握它们之间的协同工作方式。 首先,SpringBoot是Spring框架的一种轻量级实现,它简化了设置和...
标签:activemq-jpa-store-5.0.0-sources.jar,activemq,jpa,store,5.0.0,sources,jar包下载,依赖包
hibernate-jpa-2.1-api-1.0.2