07讲、JPA中的一对一双向关联
package cn.itcast.bean;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;
//关系被维护端,没有权利去修改外键
@Entity
public class IDCard {
private Long id;
private String cardno;
private Person person;
public IDCard(){}
public IDCard(String cardno) {
this.cardno = cardno;
}
@Id @GeneratedValue
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Column(length=18,nullable=false)
public String getCardno() {
return cardno;
}
public void setCardno(String cardno) {
this.cardno = cardno;
}
@OneToOne(mappedBy="idCard",cascade={CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REFRESH})
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
}
package cn.itcast.bean;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
@Entity
public class Person {
private Long id;
private String name;
private IDCard idCard;
public Person(){}
public Person(String name) {
this.name = name;
}
@Id @GeneratedValue
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Column(length=10,nullable=false)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@OneToOne(optional=false,cascade=CascadeType.ALL)
@JoinColumn(name="idCard_id")
public IDCard getIdCard() {
return idCard;
}
public void setIdCard(IDCard idCard) {
this.idCard = idCard;
}
}package junit.test;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.junit.BeforeClass;
import org.junit.Test;
import cn.itcast.bean.IDCard;
import cn.itcast.bean.Person;
public class OneToOneTest {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@Test public void save(){
EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
Person person = new Person("老张");
person.setIdCard(new IDCard("111112222233333444"));
em.persist(person);
em.getTransaction().commit();
em.close();
factory.close();
}
}