Cara Hibernate mengendalikan kelas entiti dengan bilangan parameter yang berubah-ubah
我想大声告诉你
我想大声告诉你 2017-05-17 10:06:59
0
1
497

Andaikan objek Objek mempunyai beberapa parameter, dan nama serta nombor parameter tidak pasti Saya ingin tahu bagaimana jadual data harus direka dalam kes ini agar lebih sesuai untuk Hibernate beroperasi
Saya telah menyelesaikan a penyelesaian sebelum ini (Saya ingin mendengar Tuan merungut):
Sebanyak dua jadual digunakan: satu ialah jadual tab dan satu lagi ialah jadual tabmeta, dan tid dalam jadual tabmeta dirujuk kepada id tab untuk mencipta kunci asing (sebenarnya, saya tidak mahu mencipta hubungan ini dalam pangkalan data, saya mahu mencipta kunci asing dalam program Atau lapisan DAO melaksanakan hubungan sedemikian).

Buat kelas entiti yang sepadan ( dijana terus melalui jadual menggunakan kejuruteraan terbalik InteliJ IDEA):

//tab的实体类 @Entity @Table(name = "tab", schema = "springfkhibernate", catalog = "") public class TabEntity { private int id; private String name; private Map tabmetasById; //省略一些该有的函数和geter seter @MapKey(name = "metakey") @OneToMany(mappedBy = "tabByTid") public Map getTabmetasById() { return tabmetasById; } public void setTabmetasById(Map tabmetasById) { this.tabmetasById = tabmetasById; } } //tabmeta的实体类 @Entity @Table(name = "tabmeta", schema = "springfkhibernate", catalog = "") public class TabmetaEntity { private int id; private String metakey; private String metavalue; //省略该有的getter和setter }

Parameter apabila menjana:

Tetapi ini akan menghasilkan dua kelas entiti, satu ialah TabEntity dan satu lagi ialah TabValueEntity Kecelaruan obsesif-kompulsif pada asalnya, kedua-dua jadual ini menggambarkan masalah satu entiti perhubungan satu-ke-banyak antara dua objek Sekarang saya ingin bertanya sama ada boleh menyediakan meta pembolehubah jenis (Hash) dalam TabEntity khusus untuk menyimpan parameter yang tidak pasti ini, supaya Terdapat hanya satu kelas entiti dalam kes ini, bagaimanakah data harus disimpan kembali ke pangkalan data
Jika anda ingin mengakses salah satu parameter pembolehubah dalam kelas entiti yang dijana dengan cara ini, anda memerlukan:
TabDao.getEntity(...) .getTabmetasById().get('somekey').getMetaValue()TabDao.getEntity(...).getTabmetasById().get('somekey').getMetaValue()
来实现,但是如果把这两个表的数据理解成一个实体的数据的话就应该这么实现:
TabDao.getEntity(...).getMeta('somekey'), tetapi jika data kedua-dua jadual ini difahami sebagai data satu entiti, ia sepatutnya seperti ini Pelaksanaan:
TabDao .getEntity(...).getMeta('somekey')
Saya tidak tahu sama ada tuan mempunyai cadangan dalam hal ini....
Saya juga ingin bertanya tentang hubungan tuan dengan IDEA Apa impak adakah setiap parameter dalam kotak dialog yang dibuat?

我想大声告诉你
我想大声告诉你

membalas semua (1)
滿天的星座

又到了自问自答的环节....
如果说实现我上面说的那种方式,还要实现LazyLoad,IDEA自动生成基本上是没戏的....那个生成的功能是不包括建立非对象之间的关系的,如果需要建立,只能自己去改映射文件.先把那个tab表的实体类生成出来,然后在tab的实体类中添加一个Map类型的对象(具体映射的类型看另一个表的字段数据类型),生成对应的geter和seter函数.
然后就是map文件:

    
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!