spring jpa設(shè)置多個主鍵遇到的小坑

由于項(xiàng)目需要,對多個業(yè)務(wù)表單獨(dú)另外建立對應(yīng)的歷史版本記錄表,為了原業(yè)務(wù)表數(shù)據(jù)能原封不動記錄到歷史版本表,需要建立組合主鍵,id+歷史版本號作為主鍵唯一約束(rid+historyVersion)。在實(shí)體上需要設(shè)置為主鍵的字段加上注解,@Id,例如:

/*

* 主鍵-RID

*/

@Id

@Column(name = "RID", length = 36)

private String rid;


這樣會導(dǎo)致,若是該實(shí)體存在父類,那就會啟動報錯,初始化不了,錯誤信息:

does not define an IdClass。

解決辦法是,必須要在類聲名注入@IdClass(UnitHistory.class)。

實(shí)體代碼例子如下:

package com.southgis.officeHouse.entity;

import java.io.Serializable;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.Id;

import javax.persistence.IdClass;

import javax.persistence.Index;

import javax.persistence.Table;

import lombok.Data;

import lombok.EqualsAndHashCode;

import lombok.NoArgsConstructor;

/**

*

* @author Administrator

* 單位基本信息歷史版本表

*/

@Data

@EqualsAndHashCode(callSuper=false)

@NoArgsConstructor

@Entity

@IdClass(UnitHistory.class)

@Table(name = "UNIT_HISTORY",indexes={

@Index(name="inx_unitHistory_orgid",columnList="ORGID")})

public class UnitHistory extends UnitBase implements Serializable

{

private static final long serialVersionUID = -4466904221026481006L;

/*

* 主鍵-RID

*/

@Id

@Column(name = "RID", length = 36)

private String rid;

/*

* 主鍵-歷史版本號,保存格式年份_版本號,例如2018_1

*/

@Id

@Column(name = "HISTORY_VERSION",length=36)

private String historyVersion;

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 窗間梅熟落蒂,墻下筍成出林。連雨不知春去,一晴方覺夏深。 尊敬的家長朋友們,你們辛苦了!拿到成績的那一刻...
    峽溪飛瀑閱讀 210評論 0 0
  • 《將陪溫隨啟》 花圓印月彩蝶飛, 美草青節(jié)屬婉撫。 順奇中盤估山杉, 革無獨(dú)戲忽悄渠。 咆則危虛空人睡, 傾城獻(xiàn)吻...
    春城怡景閱讀 516評論 6 18
  • 渲染引擎 渲染引擎的職責(zé)是……渲染,也就是把請求的內(nèi)容顯示到瀏覽器屏幕上。 默認(rèn)情況下渲染引擎可以顯示HTML,X...
    caikunhai閱讀 907評論 0 5
  • 周五的《我是歌手》第四季歌王爭霸賽結(jié)束了,我是第二天看重播的,因?yàn)楣谲娙诉x沒什么懸念,外加看直播不能跳過冗長的廣告...
    遇上音階閱讀 831評論 2 1

友情鏈接更多精彩內(nèi)容