我對這個話題進(jìn)行了一些研究,我要么找到了非常老的帖子,要么找到了不完全是我想要實現(xiàn)的問題。我已經(jīng)使用 Hibernate 多年了,我認(rèn)為自己非常精通它。我之前在我的持久層中使用了繼承將具有不同類型訂單的訂單表示為子類(對于醫(yī)院系統(tǒng)),以獲得很好的結(jié)果。我正在為商店開發(fā)一個新項目,但我面臨一個問題,我不確定 Hibernate 是否可以解決。基本上,我允許用戶構(gòu)建包含您期望在帳單中包含的信息的 Bill 對象:客戶姓名、帳單編號、總金額、稅金等。每個 Bill 對象都包含一組 OrderedProduct 對象,這些對象又包含一個 Product 對象和一個數(shù)量。只有這個要求,我的項目實際上已經(jīng)完成并且一切正常。我的客戶現(xiàn)在要求添加,我不知道如何解決。我被要求允許構(gòu)建 Kit 對象,這些對象只不過是一組具有價格的 Product 對象,以便為經(jīng)常一起購買的某些東西提供折扣。小菜一碟,我構(gòu)建了一個 GUI 來構(gòu)建和保存這些對象,但我現(xiàn)在有一個問題:如何將這些 Kit 對象連接到 Bill 中?我的 OrderedProduct 對象當(dāng)前綁定到一個 Product 對象,這個模型顯然與這個新要求不兼容。我不能使用繼承(據(jù)我所知),因為套件基本上只是一個降價的產(chǎn)品列表。如果這兩個類都繼承自一個公共抽象類,那么一個類如何包含另一個類的集合?我開始構(gòu)建它的方式是使用 Billable 接口。允許選擇產(chǎn)品/套件的下拉菜單使用以下代碼填充自身:items = FXCollections.observableArrayList(productService.findAllInInventory());@Overridepublic List<Billable> findAllInInventory() { List<Product> products = findProductsInInventory(); List<Kit> kits = findKitsInInventory(); List<Billable> billables = new ArrayList<>(); billables.addAll(products); billables.addAll(kits); return billables;}這允許一個下拉列表包含兩種類型的實體,同時與用戶完全無縫。我一直在用這個概念調(diào)整賬單創(chuàng)建 GUI 的其余部分,直到我意識到:實體類的屬性不能是接口類型(再次,據(jù)我所知)。對不起,我的解釋很長,我希望我想要做的很清楚。我可以想到一些(不太理想的)解決方法,但如果有人知道如何設(shè)計這個模型,我會很高興聽到的!
Hibernate - 具有作為接口的屬性的實體類
ibeautiful
2021-12-01 19:26:41