package com.lesson2; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToOne; @Entity public class Card { private int id; private String info; private User user; @OneToOne(cascade=CascadeType.ALL)
//name 指定card表外键字段,referencedColumnName指定关联到user表哪个字段
//单向关联user表不用配置
@JoinColumn(name="id2",unique=true,referencedColumnName="name") public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Id @GeneratedValue(strategy=GenerationType.AUTO) public int getId() { return id; } public void setId(int id) { this.id = id; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } }
package com.lesson2; import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToOne; @Entity public class Card { private int id; private String info; private User user; @OneToOne(cascade=CascadeType.ALL) @JoinColumn(name="id2",unique=true,referencedColumnName="name") public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Id @GeneratedValue(strategy=GenerationType.AUTO) public int getId() { return id; } public void setId(int id) { this.id = id; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } }
双向关联:
package com.lesson2; import java.util.HashSet; import java.util.Set; import javassist.expr.NewArray; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.OneToMany; import javax.persistence.OneToOne; import javax.persistence.Table; import org.hibernate.annotations.GenericGenerator; @Entity @Table(name="user") public class User { private String id; private String name; private Card card; @OneToOne(mappedBy="card") //双向关联设置mappedBy,交由card表控制 public Card getCard() { return card; } public void setCard(Card card) { this.card = card; } @Id @GeneratedValue(generator="getUuid",strategy=GenerationType.AUTO) @GenericGenerator(name="getUuid",strategy="uuid") @Column(name="id",nullable=false,unique=true) public String getId() { return id; } public void setId(String id) { this.id = id; } @Column(name="name",length=128) public String getName() { return name; } public void setName(String name) { this.name = name; } }
配置文件:
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="connection.url">jdbc:mysql://127.0.0.2:3306/test</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="format_sql">true</property> <property name="show_sql">true</property> <property name="hbm2ddl.auto">create</property> <mapping class="com.lesson2.User"/> <mapping class="com.lesson2.Card"/> </session-factory> </hibernate-configuration>