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;
    }
}
View Code

 

双向关联:

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>