hibernate oneToOne annotation 外键关联 单向+双向

用的JPA技术

单向:

解释:用Users和Customer定义oneToOne单向关联,用一个Users对应一个Customer

[Users]

package pojo;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;

@Entity

public class Users {
private int id;
private String level;
private String title;
private Customer customer;

@OneToOne
@JoinColumn(name="customer____tables")  //这里的JoinColumn定义为外键的名称,都是以one一方为基准
public Customer getCustomer() {
return customer;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
@Id
@GeneratedValue //id自增
public int getId() {
return id;
}
public String getLevel() {
return level;
}
public String getTitle() {
return title;
}
public void setId(int id) {
this.id = id;
}
public void setLevel(String level) {
this.level = level;
}
public void setTitle(String title) {
this.title = title;
}

}

[Customers]

package pojo;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;

@Entity
public class Customer {
private int id;
private String name;
private String password;


@Id
@GeneratedValue
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getPassword() {
return password;
}

public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setPassword(String password) {
this.password = password;
}

}

 

双向:

解释:用Users和Customer定义oneToOne双向关联,一个Users对应一个Customer

[Users]

package pojo;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;

@Entity

public class Users {
 private int id;
 private String level;
 private String title;
 private Customer customer;
 
 @OneToOne
 @JoinColumn(name="customer____tables")
 public Customer getCustomer() {
  return customer;
 }
 public void setCustomer(Customer customer) {
  this.customer = customer;
 }
 @Id
 @GeneratedValue
 public int getId() {
  return id;
 }
 public String getLevel() {
  return level;
 }
 public String getTitle() {
  return title;
 }
 public void setId(int id) {
  this.id = id;
 }
 public void setLevel(String level) {
  this.level = level;
 }
 public void setTitle(String title) {
  this.title = title;
 }
 
}

 

[Customers]

package pojo;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;

@Entity
public class Customer {
 private int id;
 private String name;
 private String password;
 
 private Users users; //需要加getter/setter方法
 @Id
 @GeneratedValue
 public int getId() {
  return id;
 }
 public String getName() {
  return name;
 }
 public String getPassword() {
  return password;
 }
 @OneToOne(mappedBy="customer") //只要是双向关联,必用mappedBy ,其中的值为另一方定义的对象,即getter后面的那部分
 public Users getUsers() {
  return users;
 }
 public void setId(int id) {
  this.id = id;
 }
 public void setName(String name) {
  this.name = name;
 }
 public void setPassword(String password) {
  this.password = password;
 }
 public void setUsers(Users users) {
  this.users = users;
 }
 
}

[test]
public class testUsers {

 @Test
 public void testSchemaExport() {
//  SessionFactory sessionFactory = new AnnotationConfiguration()
//    .configure().buildSessionFactory();
  SchemaExport export = new SchemaExport(
    new AnnotationConfiguration().configure());
  export.create(true, false);
//  Session session = sessionFactory.getCurrentSession();
//  session.beginTransaction();
//  session.getTransaction().commit();

 }

}

posted on 2015-01-21 14:04  ziyi_ang  阅读(341)  评论(0编辑  收藏  举报

导航