[Java lista] Hibernate - öröklött osztályok
Szécsényi Gergely
javalista at gmail.com
2009. Ápr. 22., Sze, 22:26:05 CEST
Sziasztok,
a következő a problémám:
Van egy alkalmazás, ami több modulból fog állni. Mindkét modulban
lenne egy Company tábla, de minden modulban csak a maga attributumait
lehetne elérni.
Ezért arra gondoltam, hogy ezt úgy oldom meg, hogy lesz egy abstract
BaseCompany, azokkal az adatokkal, funkciókkal, ami mindkét táblában /
osztályban szerepelne, és örökléssel egy Mod1Company, meg egy
Mod2Company.
A célom az az, hogy ezután minden modulban hozzá lehessen rendelni a
speciális adatokat.
Próbálkoztam a Hibernate - Mapping örökléses típusaival, de mindegyik
úgy mu"ködne, hogy vagy az egyik subclass-ban található meg a Company,
vagy a másikban. De nekem arra lenne szükségem, hogy mindkét
subclassban elérhessem ugyanazt a Company-t.
Ezt a mappinget bele is építettem az alkalmazásba:
A table per subclass mapping would look like:
<class name="Payment" table="PAYMENT">
<id name="id" type="long" column="PAYMENT_ID">
<generator class="native"/>
</id>
<property name="amount" column="AMOUNT"/>
...
<joined-subclass name="CreditCardPayment" table="CREDIT_PAYMENT">
<key column="PAYMENT_ID"/>
<property name="creditCardType" column="CCTYPE"/>
...
</joined-subclass>
<joined-subclass name="CashPayment" table="CASH_PAYMENT">
<key column="PAYMENT_ID"/>
...
</joined-subclass>
<joined-subclass name="ChequePayment" table="CHEQUE_PAYMENT">
<key column="PAYMENT_ID"/>
...
</joined-subclass>
</class>
Four tables are required. The three subclass tables have primary key
associations to the superclass table (so the relational model is
actually a one-to-one association).
Ez már majdnem jó, de itt mindig létre kell hoznom pl a CHEQUE_PAYMENT
táblába automatikusan a kulcsrekordot, ha létrehozok a CREDIT_PAYMENT
táblában egy rekordot, hogy a ChequePayment -bo"l is le tudjam
kérdezni.
Szóval némi hackeléssel müködik, de azt szeretném kérdezni, hogy nincs
erre más módszer?
A fenti példán is látszik, hogy arra épül, hogy egy fizetés az VAGY
csekk, VAGY készpénz. Nem lehetne az. hogy lekezleje az ÉS kapcsolatot
?
--
Gergő
További információk a(z) Javalist levelezőlistáról