创建主键类,@Embeddable 实现 Serializable 重写 equals和hashCode方法

package com.lesson1;

import java.io.Serializable;

import javax.persistence.Embeddable;

@Embeddable 
public class UserPk implements Serializable{
    @Override
    public boolean equals(Object obj) {
        // TODO Auto-generated method stub
        return super.equals(obj);
    }
    @Override
    public int hashCode() {
        // TODO Auto-generated method stub
        return super.hashCode();
    }
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    private String id1;
    private String id2;
    public String getId1() {
        return id1;
    }
    public void setId1(String id1) {
        this.id1 = id1;
    }
    public String getId2() {
        return id2;
    }
    public void setId2(String id2) {
        this.id2 = id2;
    }
}

 

实例类主键字段@EmbeddedId

package com.lesson1;

import javax.persistence.EmbeddedId;
import javax.persistence.Entity;

@Entity
public class User {
    private UserPk userPk;
    
    @EmbeddedId
    public UserPk getUserPk() {
        return userPk;
    }
    public void setUserPk(UserPk userPk) {
        this.userPk = userPk;
    }
    private String name;
    

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

执行时生成的sql

Hibernate:
    create table User (
        id1 varchar(255) not null,
        id2 varchar(255) not null,
        name varchar(255),
        primary key (id1, id2)
    )