表关系:
create table address(
id int primary key auto_increment,
address_name char(100)
);
create table person(
id int primary key auto_increment,
name char(100),
address_id int);一对一
实体:
@Entity
@Table(name = "address")
public class Address { @Id
@Column(name = "id")
private int id; @Column(name = "address_name")
private String addressName;@Entity
@Table(name = "person")
public class Person { @Id
@Column(name = "id")
private int id; @Column(name = "name")
private String name; @OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="address_id")
private Address address;test:
EntityManagerFactory emFactory = null; emFactory = Persistence.createEntityManagerFactory("jpa02");
EntityManager em = emFactory.createEntityManager();
Address a = new Address();
Person p = new Person();
p.setName("lxy");
p.setAddress(a);
a.setAddressName("hangzhou........");
em.getTransaction().begin();
// 执行添加操作
em.persist(p);
// em.persist(a); em.getTransaction().commit();
// 关闭事务
em.close();
// 关闭工厂
emFactory.close();怎么在保存的时候 person表中的address_id字段始终为0,并没有参照address的id字段。。为什么呀??
求解决。。
create table address(
id int primary key auto_increment,
address_name char(100)
);
create table person(
id int primary key auto_increment,
name char(100),
address_id int);一对一
实体:
@Entity
@Table(name = "address")
public class Address { @Id
@Column(name = "id")
private int id; @Column(name = "address_name")
private String addressName;@Entity
@Table(name = "person")
public class Person { @Id
@Column(name = "id")
private int id; @Column(name = "name")
private String name; @OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="address_id")
private Address address;test:
EntityManagerFactory emFactory = null; emFactory = Persistence.createEntityManagerFactory("jpa02");
EntityManager em = emFactory.createEntityManager();
Address a = new Address();
Person p = new Person();
p.setName("lxy");
p.setAddress(a);
a.setAddressName("hangzhou........");
em.getTransaction().begin();
// 执行添加操作
em.persist(p);
// em.persist(a); em.getTransaction().commit();
// 关闭事务
em.close();
// 关闭工厂
emFactory.close();怎么在保存的时候 person表中的address_id字段始终为0,并没有参照address的id字段。。为什么呀??
求解决。。
@OneToOne(targetEntity=UserDeploy.class, mappedBy="user", cascade=CascadeType.ALL, fetch=FetchType.EAGER)
private UserDeploy userDeploy;UserDeploy类,从表
@OneToOne
@JoinColumn(name="user_id")
private User user;
// 执行添加操作
em.persist(a);
em.persist(p);
em.getTransaction().commit();