2009-08-05 7 views
0

Je traite le scénario suivant:Mappage enum Hibernate 'sans table'?

Nous utilisons table-per-subclass inheritance, ce qui signifie les clés primaires de tables en béton sont des références clés étrangères sur la abstraite tableau. Superclasse est Produit, sous-classes sont livre, DVD, audiocd ...

maintenant dans la superclasse Java, disent Product.java, nous avons un enum des types de produits: livre, dvd, musique, etc.

Nous n'avons pas de colonne de discriminateur dans la table de résumé et pas de table supplémentaire pour les types.

Est-il possible de cartographier le type enum dans Product.java aux valeurs correctes, en fonction de l'objet concret? Ou un discriminateur ou une table supplémentaire est-il nécessaire?

... ....

Tableau par la sous-classe extrait de mappage d'héritage:

<class name="Product" table="PRODUCT"> 
    <id name="id" column="IDPRODUCT" type="int"> 
     <generator class="native" /> 
    </id> 
    ... 

    <joined-subclass name="Book" table="BOOK"> 
     <key column="IDPRODUCT" /> 

     <property ... 

    </joined-subclass> 
... 

... ...

Product.java

public class Product { 

    public enum Type { book, dvd, music } 

    ... 

    private Type type; 

    ... 

sons bizarre? Peut être. Deux parties distinctes ont conçu la partie OO et la partie DB ...

Répondre

4

Il me manque peut-être quelque chose, mais pourquoi auriez-vous même Type comme champ? Rendre getType() résumé dans Product et l'implémenter dans les sous-classes pour retourner la valeur appropriée.