jpa复习日志--复合主键的使用
复合主键(UserBean和CJBean)
注:这里使用到了 @EmbeddedId(在对数据库的真正操作表嵌入复合主键)和@Embeddable(用来嵌入的表,只添加这个注解,其他的注解不需要)
UserBean:
package com.bean;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
@Entity
@Table(name = "score")
public class ScoreBean implements Serializable {
//测试复合主键,简单的插入时可以用两个id
// @Id
// private String name;
// @Id
// private String classinfo;
//直接使用另外一张表来映射这两个主键
@Id
@EmbeddedId //嵌入式的id
private CJBean id;
private int value;
public int getValue() {
return value;
}
public CJBean getId() {
return id;
}
public void setId(CJBean id) {
this.id = id;
}
public void setValue(int value) {
this.value = value;
}
}
CJBean:
package com.bean;
import javax.persistence.Embeddable;
import java.io.Serializable;
@Embeddable
public class CJBean implements Serializable {
private String name;
private String classinfo;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getClassinfo() {
return classinfo;
}
public void setClassinfo(String classinfo) {
this.classinfo = classinfo;
}
}
复合主键的使用
1.不涉及到查询,可以使用两个@Id
2.涉及到查询,使用嵌入式
测试代码:
package com.test;
import com.bean.CJBean;
import com.bean.ScoreBean;
import com.bean.UserBean;
import com.util.JpaUtil;
import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;
public class TestFive {
public static void main(String[] args) {
//复合主键插入
//TestFive.contact();
//复合主键查询
TestFive.query();
}
private static void query() {
EntityManager entityManager = null;
EntityTransaction tx = null;
try {
entityManager = JpaUtil.getManager();
tx = entityManager.getTransaction();
tx.begin();
CJBean item=new CJBean();
item.setClassinfo("11111111111");
item.setName("bbbbbbbbbbbb");
ScoreBean bean = entityManager.find(ScoreBean.class,item);
//entityManager.persist(bean);
System.out.println(bean.getId().getClassinfo()+"\t"+bean.getId().getName());
tx.commit();
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
} finally {
try {
JpaUtil.closeManager();
} catch (Exception e) {
e.printStackTrace();
}
}
System.exit(0);
}
private static void contact() {
EntityManager entityManager = null;
EntityTransaction tx = null;
try {
entityManager = JpaUtil.getManager();
tx = entityManager.getTransaction();
tx.begin();
ScoreBean bean = new ScoreBean();
//bean.setClassinfo("11111111111");
//bean.setName("bbbbbbbbbbbb");
bean.setValue(99);
entityManager.persist(bean);
tx.commit();
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
} finally {
try {
JpaUtil.closeManager();
} catch (Exception e) {
e.printStackTrace();
}
}
System.exit(0);
}
}