JPA复合主键案例
来源:互联网 发布:捷西网络官网地址 编辑:程序博客网 时间:2024/05/17 01:07
AirLine实体类
package com.jason.bean;import java.io.Serializable;import javax.persistence.Column;import javax.persistence.EmbeddedId;import javax.persistence.Entity;@Entitypublic class AirLine implements Serializable{private static final long serialVersionUID = -5617618540181055061L;private AirLinePk id; private String name; public AirLine() { super(); } public AirLine(String startCity,String endCity, String name) { this.id =new AirLinePk(startCity,endCity); this.name = name; } @EmbeddedId public AirLinePk getId() { return id; } public void setId(AirLinePk id) { this.id = id; } @Column(length=20) public String getName() { return name; } public void setName(String name) { this.name = name; } }
AirLinePk复合主键类
package com.jason.bean;import java.io.Serializable;import javax.persistence.Column;import javax.persistence.Embeddable;/** * 使用复合主键要满足的条件 * * 1、要实现序列化 2、提供默认的构造方法 3、实现hashCode * * @author jason * */@Embeddable //embeddable: 可嵌入的public class AirLinePk implements Serializable {private static final long serialVersionUID = 7102936569989834678L;private String startCity;// 出发城市 private String endCity;// 到达城市 public AirLinePk() { super(); } public AirLinePk(String startCity, String endCity) { super(); this.startCity = startCity; this.endCity = endCity; } @Column(length = 3) public String getStartCity() { return startCity; } public void setStartCity(String startCity) { this.startCity = startCity; } @Column(length = 3) public String getEndCity() { return endCity; } public void setEndCity(String endCity) { this.endCity = endCity; } @Override public int hashCode() { final int PRIME = 31; int result = 1; result = PRIME * result + ((endCity == null) ? 0 : endCity.hashCode()); result = PRIME * result + ((startCity == null) ? 0 : startCity.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; final AirLinePk other = (AirLinePk) obj; if (endCity == null) { if (other.endCity != null) return false; } else if (!endCity.equals(other.endCity)) return false; if (startCity == null) { if (other.startCity != null) return false; } else if (!startCity.equals(other.startCity)) return false; return true; }}
PKTest测试类
package junit.test;import java.util.List;import javax.persistence.EntityManager;import javax.persistence.EntityManagerFactory;import javax.persistence.Persistence;import org.junit.AfterClass;import org.junit.BeforeClass;import org.junit.Test;import com.jason.bean.AirLine;import com.jason.bean.AirLinePk;public class PKTest {private static EntityManagerFactory factory;private static EntityManager em;@BeforeClasspublic static void setUpBeforeClass() throws Exception { factory = Persistence.createEntityManagerFactory("jason"); em = factory.createEntityManager(); em.getTransaction().begin();} @Test public void save() { em.persist(new AirLine("PEK","SHA","北京飞上海")); } @Test public void find() { AirLine airLine=em.find(AirLine.class, new AirLinePk("PEK","SHA")); System.out.println(airLine.getName()); } @Test public void update() { AirLine airLine=em.getReference(AirLine.class, new AirLinePk("PEK","SHA")); airLine.setName("北京飞上海啊哈哈"); em.merge(airLine); } @SuppressWarnings("unchecked")@Test public void list() { List<AirLine> airLines=em.createQuery("select o from AirLine o").getResultList(); for(AirLine air:airLines){ System.out.println(air.getName()); } } @Test public void detele() { em.remove(em.getReference(AirLine.class, new AirLinePk("PEK","SHA"))); } /** * 用来判断映射是否成功 * */ @Test public void test() { Persistence.createEntityManagerFactory("jason"); } @AfterClasspublic static void tearDownAfterClass() throws Exception { em.getTransaction().commit(); em.close(); factory.close();}}
- JPA复合主键案例
- JPA 复合主键源码案例
- JPA 复合主键
- JPA复合主键使用
- JPA 复合主键
- 复合主键JPA
- JPA 复合主键
- JPA 复合主键
- jpa嵌入式复合主键
- Hibernate-复合主键案例
- jpa复合主键的使用
- Spring Data Jpa 复合主键
- JPA双向关系配置&复合主键
- JPA关联映射 - 复合主键映射
- jpa复合主键的使用 【转载】
- Spring Data JPA使用复合主键
- Spring Data JPA使用复合主键
- JPA复合主键另一种实现--联合约束
- chmod
- [C-Library]ctype.h - islower( )
- vim取消高亮
- Bash 实例,第 3 部分探讨 ebuild 系统
- 自定义Font Icon
- JPA复合主键案例
- [ZHUAN]编译android 错误出现的问题
- [译文] 关于文件的最新访问时间(atime)
- Linux NFS 服务详解
- CSS3 Media Queries在iPhone4和iPad上的运用
- 交换两个字符串
- 关于gcc,Binutils,Make, gdb 和 glibc
- Prime Land
- zen cart与magento是目前世界上最为流行的两大外贸网店系统