日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了如何在Hibernate中定義復合外鍵映射?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我有兩個表:USERS和USERDILES如下:

package com.example.easynotes.model;

import javax.persistence.*;
import java.io.Serializable;

@Entity
@Table(name = "users")
@IdClass(UserID.class)
public class User implements Serializable {

    @Id
    int id;

    @Id
    String name;

    String department;

    //getters and setters

}

用戶詳細信息類如下:

public class UserDetails implements Serializable{

int id;

String name;

String address;

String otherFields;

//getters and setters

}

USERS中的id和name是一個復合主鍵,我希望用戶詳細信息中的相同字段作為外鍵。如何在休眠中實現這一點?

推薦答案

我們需要將兩個鍵都放在@Embeddable中以分離復合鍵,然后使用@EmbeddedId將其放入User實體中,并使用Hibernate Relational Mapping

映射這兩個主鍵

Composite Primary Key有兩個選項:

    使用@EmbeddedId
    使用@IdClass()

下面是示例:

———————————–使用EmbeddedID———————————–

復合主鍵:

@Embeddable
public class UserIdName implements Serializable {
    int id;
    String name;
    
    // getter and setter
}

用戶:

@Entity
@Table(name = "users")
public class USER{
    @EmbeddedId
    private UserIdName id;

    String department;
    
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
    private Set<Userdetail> userdetail;

    // getter and setter
}

用戶詳細信息:

@Entity
@Table(name = "Userdetail")
public class Userdetail {

    @Id
    private int detail_id;

    @ManyToOne
    @JoinColumns({ @JoinColumn(name = "id", referencedColumnName = "id"),
            @JoinColumn(name = "name", referencedColumnName = "name") })
    private USER user;

    String address;

    String otherFields;

    // getter setter
}

———————————–使用IDClass———————————–

復合主鍵:

public class UserIdName implements Serializable {
    int id;
    String name;
    
    // getter and setter
}

用戶:

@Entity
@Table(name = "users")
@IdClass(UserIdName.class)
public class USER{
    @Id
    int id;

    @Id
    String name;

    String department;
    
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
    private Set<Userdetail> userdetail;

    // getter and setter
}

用戶詳細信息:

@Entity
@Table(name = "Userdetail")
public class Userdetail {

    @Id
    private int detail_id;

    @ManyToOne
    @JoinColumns({ @JoinColumn(name = "id", referencedColumnName = "id"),
            @JoinColumn(name = "name", referencedColumnName = "name") })
    private USER user;

    String address;

    String otherFields;

    // getter setter
}

-&gt;如果要手動插入兩個外鍵,請嘗試下面的代碼

將此代碼放入UserDetails

@ManyToOne
@JoinColumn(name = "id", referencedColumnName = "id", insertable = false, updatable = false)
@JoinColumn(name = "name", referencedColumnName = "name", insertable = false, updatable = false)
private USER user;

@Column(name="id")
private int id;

@Column(name="name")
private String name

// don't forget to put getter setter

用戶表:

用戶明細表:

這篇關于如何在Hibernate中定義復合外鍵映射?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:composite-key errorHowtodefinecompositeforeignkeymappinginhibernate? ex
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定