jpa复合主键的使用
2011-03-09 19:34
260 查看
AirLinePk复合主键类
AirLine实体类
PKTest测试类
package com.ljq.entity; import javax.persistence.Column; import javax.persistence.Embeddable; /** * 使用复合主键要满足的条件 * * 1、要实现序列化 2、提供默认的构造方法 3、实现hashCope * * @author Administrator * */ @SuppressWarnings("serial") @Embeddable //embeddable: 可嵌入的 public class AirLinePk implements java.io.Serializable { @Column(length = 3) private String startCity;// 出发城市 @Column(length = 3) private String endCity;// 抵达城市 public AirLinePk() { super(); } public AirLinePk(String startCity, String endCity) { super(); this.startCity = startCity; this.endCity = endCity; } public String getEndCity() { return endCity; } public void setEndCity(String endCity) { this.endCity = endCity; } public String getStartCity() { return startCity; } public void setStartCity(String startCity) { this.startCity = startCity; } @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; } }
AirLine实体类
package com.ljq.entity; import javax.persistence.Column; import javax.persistence.EmbeddedId; import javax.persistence.Entity; @SuppressWarnings("serial") @Entity public class AirLine implements java.io.Serializable{ @EmbeddedId private AirLinePk id; @Column(length=20) private String name; public AirLine() { super(); } public AirLine(String startCity,String endCity, String name) { this.id =new AirLinePk(startCity,endCity); this.name = name; } public AirLinePk getId() { return id; } public void setId(AirLinePk id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
PKTest测试类
package com.ljq.test; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import org.junit.Test; import com.ljq.entity.AirLine; import com.ljq.entity.AirLinePk; public class PKTest { @Test public void save() { EntityManagerFactory factory = Persistence.createEntityManagerFactory("ljq"); EntityManager em=factory.createEntityManager(); em.getTransaction().begin(); em.persist(new AirLine("PEK","SHA","北京飞上海")); em.getTransaction().commit(); em.close(); factory.close(); } @Test public void find() { EntityManagerFactory factory = Persistence.createEntityManagerFactory("ljq"); EntityManager em=factory.createEntityManager(); em.getTransaction().begin(); AirLine airLine=em.find(AirLine.class, new AirLinePk("PEK","SHA")); System.out.println(airLine.getName()); em.getTransaction().commit(); em.close(); factory.close(); } @Test public void update() { EntityManagerFactory factory = Persistence.createEntityManagerFactory("ljq"); EntityManager em=factory.createEntityManager(); em.getTransaction().begin(); AirLine airLine=em.getReference(AirLine.class, new AirLinePk("PEK","SHA")); airLine.setName("北京飞上海北京飞上海"); em.merge(airLine); em.getTransaction().commit(); em.close(); factory.close(); } @SuppressWarnings({ "unused", "unchecked" }) @Test public void list() { EntityManagerFactory factory = Persistence.createEntityManagerFactory("ljq"); EntityManager em=factory.createEntityManager(); em.getTransaction().begin(); List<AirLine> airLines=em.createQuery("select o from AirLine o").getResultList(); for(AirLine air:airLines){ System.out.println(air.getName()); } em.getTransaction().commit(); em.close(); factory.close(); } @SuppressWarnings({ "unused", "unchecked" }) @Test public void detele() { EntityManagerFactory factory = Persistence.createEntityManagerFactory("ljq"); EntityManager em=factory.createEntityManager(); em.getTransaction().begin(); em.remove(em.getReference(AirLine.class, new AirLinePk("PEK","SHA"))); em.getTransaction().commit(); em.close(); factory.close(); } /** * 用来判断映射是否成功 * */ @Test public void test() { Persistence.createEntityManagerFactory("ljq"); } }
相关文章推荐
- jpa复合主键的使用 【转载】
- jpa复合主键的使用
- JPA复合主键使用
- Spring Data JPA使用复合主键
- Spring Data JPA使用复合主键
- 使用注解风格学习Hibernate和JPA的主键生成策略
- 复合主键JPA
- hiberante中使用复合主键
- hiberante中使用复合主键
- spring jpa使用联合主键
- Hibernate复合主键的使用(转)
- spring data jpa .基本使用,多条件复合查询,报表查询。
- Hibernate复合主键使用组件方式的hbm.xml配置与集合配置
- [译文]JPA的实施模式:使用UUID作为主键
- EJB3.0中关于Jpa的复合主键
- Hibernate复合主键的使用(转)
- 解决使用Hibernate QBC复合查询含有联合主键映射关系实体的问题
- NHibernate使用复合主键(二)(包含一对多关系)
- JPA 菜鸟教程 13 复合主键-@EmbeddedId+@Embeddable
- JPA关联映射 - 复合主键映射