午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java - Hibernate如何處理參數(shù)數(shù)量不定的實(shí)體類

瀏覽:247日期:2023-12-01 18:30:50

問(wèn)題描述

假設(shè)一個(gè)對(duì)象Object有若干個(gè)參數(shù),而參數(shù)的名稱和數(shù)量是不確定的,想知道這種情況下數(shù)據(jù)表應(yīng)該怎么設(shè)計(jì)才會(huì)更適合Hibernate去操作.之前我弄過(guò)一個(gè)方案(想聽(tīng)大神吐槽):一共用到了兩個(gè)表:一個(gè)是tab表,一個(gè)是tabmeta表,并將tabmeta表中的tid參照tab的id創(chuàng)建外鍵(其實(shí)不想在數(shù)據(jù)庫(kù)中創(chuàng)建出這個(gè)關(guān)系,想在程序或者DAO層實(shí)現(xiàn)這樣的關(guān)系).java - Hibernate如何處理參數(shù)數(shù)量不定的實(shí)體類創(chuàng)建出對(duì)應(yīng)的實(shí)體類(用InteliJ IDEA的逆向工程直接通過(guò)表生成的):

//tab的實(shí)體類@Entity@Table(name = 'tab', schema = 'springfkhibernate', catalog = '')public class TabEntity { private int id; private String name; private Map<Object, TabmetaEntity> tabmetasById; //省略一些該有的函數(shù)和geter seter @MapKey(name = 'metakey') @OneToMany(mappedBy = 'tabByTid') public Map<Object, TabmetaEntity> getTabmetasById() {return tabmetasById; } public void setTabmetasById(Map<Object, TabmetaEntity> tabmetasById) {this.tabmetasById = tabmetasById; }}//tabmeta的實(shí)體類@Entity@Table(name = 'tabmeta', schema = 'springfkhibernate', catalog = '')public class TabmetaEntity { private int id; private String metakey; private String metavalue; //省略該有的getter和setter}

生成的時(shí)候的參數(shù):java - Hibernate如何處理參數(shù)數(shù)量不定的實(shí)體類但是這樣會(huì)搞出兩個(gè)實(shí)體類出來(lái),一個(gè)是TabEntity,一個(gè)是TabValueEntity,強(qiáng)迫癥表示不爽啊,本來(lái)這兩個(gè)表描述的是一個(gè)實(shí)體的問(wèn)題,而不是兩個(gè)具有一對(duì)多的兩個(gè)對(duì)象的關(guān)系.現(xiàn)在我想問(wèn)一下能不能實(shí)現(xiàn)在TabEntity中準(zhǔn)備一個(gè)類型為(Hash)Map的變量metas,專門(mén)用來(lái)存儲(chǔ)這些不確定的參數(shù),這樣就只有一個(gè)實(shí)體類了.但是這樣的話,數(shù)據(jù)在回存數(shù)據(jù)庫(kù)的時(shí)候又應(yīng)該怎么實(shí)現(xiàn)呢?現(xiàn)在這種方式產(chǎn)生的實(shí)體類如果想要訪問(wèn)其中的某一個(gè)不定參數(shù)的話,需要:TabDao.getEntity(...).getTabmetasById().get(’somekey’).getMetaValue()來(lái)實(shí)現(xiàn),但是如果把這兩個(gè)表的數(shù)據(jù)理解成一個(gè)實(shí)體的數(shù)據(jù)的話就應(yīng)該這么實(shí)現(xiàn):TabDao.getEntity(...).getMeta(’somekey’)不知道大神有沒(méi)有針對(duì)這方面的建議....另外想問(wèn)問(wèn)大神在IDEA的關(guān)系創(chuàng)建的對(duì)話框中每一項(xiàng)參數(shù)會(huì)產(chǎn)生怎樣的影響.java - Hibernate如何處理參數(shù)數(shù)量不定的實(shí)體類困惑比較大,還望大神們賜教!

問(wèn)題解答

回答1:

又到了自問(wèn)自答的環(huán)節(jié)....如果說(shuō)實(shí)現(xiàn)我上面說(shuō)的那種方式,還要實(shí)現(xiàn)LazyLoad,IDEA自動(dòng)生成基本上是沒(méi)戲的....那個(gè)生成的功能是不包括建立非對(duì)象之間的關(guān)系的,如果需要建立,只能自己去改映射文件.先把那個(gè)tab表的實(shí)體類生成出來(lái),然后在tab的實(shí)體類中添加一個(gè)Map類型的對(duì)象(具體映射的類型看另一個(gè)表的字段數(shù)據(jù)類型),生成對(duì)應(yīng)的geter和seter函數(shù).然后就是map文件:

<map name='values' table='tabmeta'> <key column='tid' foreign-key='id'/><!--虛擬外鍵:誰(shuí)和誰(shuí)相等代表關(guān)系--> <index column='meta_key' type='string'/><!--Map的Key是誰(shuí)--> <element column='meta_value' type='double'/><!--Map的Value是誰(shuí)--></map>

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 五月激情六月婷婷 | 99热影院 | 亚洲黄色成人网 | 免费毛片视频网站 | 中文字幕在线观 | 中文字幕+乱码+中文 | 国产精品久久久久久久久久妞妞 | 色播导航 | 天天射天天拍 | 欧美精品系列 | 永久免费的网站入口 | 国产原创在线 | 午夜精品久久久 | 日韩欧美黄 | 成人毛片视频免费看 | 亚洲最大福利网 | 性做久久久久 | 色网站视频| 一区二区三区黄 | 国产拍拍 | 亚洲色图导航 | 国产亚洲精品成人 | 日韩三级一区二区三区 | 亚洲色图图片 | 久久国产精品免费 | 91视频88av| 亚洲天堂福利 | 成人高潮片免费视频 | 国产一区二区三区四区在线观看 | 一道本视频在线 | 久久精品国产77777蜜臀 | 欧美亚洲综合在线 | 亚洲男人在线天堂 | www.日韩av.com| 国产第一网站 | 自拍偷拍色图 | 99色在线 | 天天干夜夜欢 | 在线观看国产黄 | 日韩中文字幕有码 | 亚洲一区二区三区在线视频 |