Husband.java
 1package com.bebig.hibernate.model;
 2
 3import javax.persistence.Entity;
 4import javax.persistence.GeneratedValue;
 5import javax.persistence.Id;
 6import javax.persistence.JoinColumn;
 7import javax.persistence.JoinColumns;
 8import javax.persistence.OneToOne;
 9
10@Entity
11public class Husband {
12    private int id;
13
14    private String name;
15
16    private Wife wifeId;
17
18    @Id
19    @GeneratedValue
20    public int getId() {
21        return id;
22    }
23
24    public String getName() {
25        return name;
26    }
27
28    @OneToOne
29    @JoinColumns({ @JoinColumn(name = "wifeId", referencedColumnName = "id"),
30            @JoinColumn(name = "wifeName", referencedColumnName = "name") })
31    public Wife getWifeId() {
32        return wifeId;
33    }
34
35    public void setId(int id) {
36        this.id = id;
37    }
38
39    public void setName(String name) {
40        this.name = name;
41    }
42
43    public void setWifeId(Wife wifeId) {
44        this.wifeId = wifeId;
45    }
46}
47

Wife.java
 1package com.bebig.hibernate.model;
 2
 3import javax.persistence.Entity;
 4import javax.persistence.Id;
 5import javax.persistence.IdClass;
 6
 7@Entity
 8@IdClass(WifePK.class)
 9public class Wife {
10    private int id;
11
12    private String name;
13
14    private int age;
15
16    public int getAge() {
17        return age;
18    }

19
20    @Id
21    public int getId() {
22        return id;
23    }

24
25    @Id
26    public String getName() {
27        return name;
28    }

29
30    public void setAge(int age) {
31        this.age = age;
32    }

33
34    public void setId(int id) {
35        this.id = id;
36    }

37
38    public void setName(String name) {
39        this.name = name;
40    }

41}

42

WifePK.java
 1package com.bebig.hibernate.model;
 2
 3import java.io.Serializable;
 4
 5public class WifePK implements Serializable {
 6    /**
 7     * 
 8     */

 9    private static final long serialVersionUID = -5517968831518191245L;
10
11    private int id;
12
13    private String name;
14
15    public int getId() {
16        return id;
17    }

18
19    public String getName() {
20        return name;
21    }

22
23    public void setId(int id) {
24        this.id = id;
25    }

26
27    public void setName(String name) {
28        this.name = name;
29    }

30
31    @Override
32    public boolean equals(Object o) {
33        if (o instanceof WifePK) {
34            WifePK pk = (WifePK) o;
35            if (pk.id == this.id && this.name.equals(pk.getName())) {
36                return true;
37            }

38        }

39        return false;
40    }

41
42    @Override
43    public int hashCode() {
44        return this.name.hashCode();
45    }

46}

47

hibernate.cfg.xml
1//省略
2<mapping class="com.bebig.hibernate.model.Husband"/>
3        <mapping class="com.bebig.hibernate.model.Wife"/>
4//省略
5