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

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

如何使泛型類對多個實體使用 JPARepository

如何使泛型類對多個實體使用 JPARepository

慕姐4208626 2022-08-03 09:59:19
場景:一個應用程序具有多個實體。每個實體表示一個數(shù)據(jù)庫表。所有數(shù)據(jù)庫表都有一個主鍵列,但列名不同。實體示例:@Entity@Table(name = "ABC",schema = "XYZ" )public class SaveData extends EntityClass {    @Id    @Column(name = "ABC_ID", nullable = false, insertable = true, updatable = true, precision = 0)    private int id;    @Column(name = "ABC1_ID", nullable = false, insertable = true, updatable = true, precision = 0)    private int abc1_id;    @Column(name = "DATA", nullable = true, insertable = true, updatable = true, precision = 0)    private String data;   //Getter - Setter methods of the above member variables.}EntityClass 就像一個泛型類。此抽象類將由所有實體類擴展。@MappedSuperclasspublic abstract class EntityClass {    @Id    private int id;}該應用程序有一個Dao界面,如:@Repositorypublic interface DaoRepos extends JpaRepository<EntityClass,Long> {}服務類示例:@Componentpublic class ServiceMethodsImpl implements ServiceMethods {    @Autowired    private DaoRepos daoRepos ;    @Override    public void saveDatainDB(SaveData saveData ) {        daoRepos.save(saveData);    }}問題:如果我聲明 dao 接口,如下所示:@Repositorypublic interface ReviewRepos extends JpaRepository<SaveData,Long> {}像在JPARepository中一樣發(fā)送參數(shù),然后我在服務類中的方法運行良好。SaveDatasaveDatainDB現(xiàn)在,這僅用于保存實體的數(shù)據(jù)。同樣,存在其他實體,并且需要應用相同的保存功能。因此,我想創(chuàng)建一個表示所有實體的泛型類(在本例中)。該類將作為參數(shù)發(fā)送到,以便在運行時,我們可以重寫 with 子類(例如EntityClassJPARepositoryEntityClassSaveData)但是Spring不允許創(chuàng)建沒有列的類。因此,我必須聲明一個 ID 列。同樣在我的數(shù)據(jù)庫中,每個表都有一個主列,但所有表的該列的名稱都不同。例如,表 XYZ 將具有主列,xyz_id表 ABC 將具有主列abc_idEntityClass@Id因此,我必須在子類實體中定義一個帶有注釋的 ID 列。SaveData@Column現(xiàn)在,當我嘗試保存時,除了類中存在的列之外,還會創(chuàng)建一個單獨的列。此額外內容會將錯誤創(chuàng)建為 。ididSaveDataidunrecognized column另外,我很想知道我的方法是否正確。
查看完整描述

1 回答

?
Qyouu

TA貢獻1786條經(jīng)驗 獲得超11個贊

對于舊系統(tǒng),可以使用@AttributeOverride注釋覆蓋 id 列名。


@Entity

@AttributeOverride(name="id", column=@Column(name="ABC_ID"))

@Table(name = "ABC",schema = "XYZ" )

public class SaveData extends EntityClass {


    @Column(name = "ABC1_ID", nullable = false, insertable = true, updatable = true, precision = 0)

    private int abc1_id;


    @Column(name = "DATA", nullable = true, insertable = true, updatable = true, precision = 0)

    private String data;    

}


查看完整回答
反對 回復 2022-08-03
  • 1 回答
  • 0 關注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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