第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

將外鍵作為模型中的主鍵

將外鍵作為模型中的主鍵

白板的微信 2021-11-17 17:23:25
我需要將外鍵列作為我的休眠應(yīng)用程序模型中的主鍵。當(dāng)我設(shè)置@Id 時(shí)出現(xiàn)錯(cuò)誤。這是我的模型@Entity@Table(name = "otp")public class OTP {@Idprivate Origin origin;private int code;@Column(name = "created_at", nullable = true)private Date created_at=new Date();}以上實(shí)體模型不能添加id。那么如何為外鍵列添加 id。正如你所看到的,我有原始類一對一的關(guān)系。我需要這種關(guān)系是主鍵
查看完整描述

2 回答

?
嚕嚕噠

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊

外鍵允許重復(fù),這使得它們在大多數(shù)情況下不適合作為主鍵。然而,這不是規(guī)則。


唯一的例外是具有一對一關(guān)系的表,其中鏈接表的外鍵和主鍵相同。


我遇到了類似的情況并做了這樣的事情,


@Entity

@Table(name = "PERSON_DETAILS")

public class PersonDetails {

    @Id

    private Long personId; 


    @OneToOne(fetch = FetchType.LAZY)

    @JoinColumn(name = "ID_PERSON", nullable = false)

    @MapsId

    private Person person;

    ....

}


@Entity

@Table(name = "PERSON")

@SequenceGenerator(name = "SQ_PRSN_ID", sequenceName = "SQ_PRSN_ID")

public class Person{

    @Id

    @GeneratedValue(generator = "SQ_PRSN_ID", strategy = GenerationType.SEQUENCE)

    @Column(name = "ID_PERSON", nullable = false)

    private Long personId;

    ...

}

我在這里找到了類似的例子,希望這是你正在尋找的。


查看完整回答
反對 回復(fù) 2021-11-17
?
慕的地6264312

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超6個(gè)贊

首先,您不能將關(guān)系作為主鍵。相反,您可以將外鍵作為主鍵,當(dāng)且僅當(dāng)兩個(gè)表之間的關(guān)系是一對一的。


在您的情況下,因?yàn)樗且粚σ坏?,所以我們很高興。


但不是用@Id 注釋Origin。使用@Id 注釋外鍵并在定義關(guān)系時(shí)使用@MapsId。


請參閱下面的示例代碼,其中人員和人員詳細(xì)信息具有一對一的關(guān)系。


人員詳細(xì)信息實(shí)體如下所示:


@Entity

@Table(name = "person_details")

public class PersonDetails {


    @Id

    @Column(name = "person_details_Id")

    private Long personId;


     @Column(name = "person_name")

    private String personName;


    @OneToOne

    @JoinColumn(name = "person_Id")

    @MapsId

    private Person person;


    ...

}

人實(shí)體看起來像:


@Entity

@Table(name = "person")

public class Person {


    @Id

    @GeneratedValue(strategy = GenerationType.SEQUENCE)

    @SequenceGenerator(name = "person_seq")

    @Column(name = "person_id")

    private Long personId;


    @Column(name = "person_profsn")

    private String personProfession;


    @OneToOne(mappedBy = "person")

    private PersonDetails personDetails;


    ...

}


查看完整回答
反對 回復(fù) 2021-11-17
  • 2 回答
  • 0 關(guān)注
  • 205 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號