java联合主键关联

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhang1996922/article/details/82559777

假设将Wife类的id和name同设为主键则需要写一个主键类:WifePk操作如下
package hibernate001test;

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

@Entity
@IdClass(WifePk.class)//联合主键生成策略
public class Wife {
private int id;
private String name;
private int age;

@Id
public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

@Id
public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}

}
如下为主键类:

package hibernate001test;
/**
* 主键类(id和name同为主键)
* @author Lenovo
*
*/

public class WifePk {

private int id;
private String name;
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}

}
如下为测试类
package hibernate001test;

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

@Entity
public class Husbent {
private int id;
private String name;
private Wife wife;

@Id
@GeneratedValue
public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

@OneToOne
// 这个注解可以修改字段的名字(可写可不写)
@JoinColumns({ @JoinColumn(name = "wifeid", referencedColumnName = "id"),
        @JoinColumn(name = "wifename", referencedColumnName = "name") })
public Wife getWife() {
    return wife;
}

public void setWife_id(Wife wife) {
    this.wife = wife;
}

}
测试方法
package datatest;

import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
/**
* 在一对一双向关联时要使用例如:@OneToOne(mappedBy=”wife”)
* @author Lenovo
*
*/
public class Test {

@org.junit.Test
public void test() {
   new SchemaExport(new AnnotationConfiguration().configure()).create(false,true);
}

}

猜你喜欢

转载自blog.csdn.net/zhang1996922/article/details/82559777
今日推荐