联合主键:一般是两个或者以上的字段来标示主键,在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.0-api-1.0.1.Final.jar
hibernate-jpa-2.1-api-1.0.0.final.jar.zip,内含hibernate-jpa-2.1-api-1.0.0.final.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar官方下载,请放心使用
hibernate-jpa-2.0-api-1.0.1.Final-sources.jar hibernate jpa 源代码
java.lang.NoClassDefFoundError: javax/persistence/spi/ProviderUtil 或javax/persistence/entitylistener问题
hibernate-jpa-2.0-api-1.0.1.Final-sources
java运行依赖jar包
hibernate-jpa-2.1-api-1.0.0.final-sources.jar.zip的源代码
总结一下关于JPA的主键生成策略,JPA是用@GeneratedValue标记来注释的。一般的我把主键生成分成两大类。第一个就是简单的单字段主键类型,一个就是复杂的复合主键类型。我们分2种情况分别讨论。 第一种单字段主键...
JPA学习笔记-EJB-04JPA关联映射总结 JPA JPA关联映射JPA学习笔记-EJB-04JPA关联映射总结 JPA JPA关联映射
springboot-jpa-activiti-bootstrap-master。springboot是2 activity是6
jpa-e-hibernate-1a-edicao
从网上load下来的jpa开发API,这样离线也能查阅文档。不过,可能有错误的地方,自己可以修改html文件进行纠正!
SpringDataJpa开发--继承JpaRepository实现简单条件查询示例代码
标签:activemq-jpa-store-5.0.0-sources.jar,activemq,jpa,store,5.0.0,sources,jar包下载,依赖包