2010-05-09 21 views
1

J'utilise Hibernate3 et Hibernate Tools 3.2.4 pour générer des fichiers hbm.xml et java et je veux utiliser List au lieu de HashSet (...). J'ai essayé de modifier les fichiers hbm.xml, en mettant la liste au lieu de définir. Est-il possible de spécifier à hiberner les outils que je veux générer automatiquement une liste pas un HashSet? Ce est un exemple:Modification des paramètres d'Hibernate 3

classe Java

public class Test implements java.io.Serializable { 

    private Long testId; 
    private Course course; 
    private String testName; 
    private Set<Question> questions = new HashSet<Question>(0); 
} 

Test.hbm.xml:

<set name="questions" inverse="true" lazy="true" table="questions" fetch="select"> 
    <key> 
    <column name="test_id" not-null="true" /> 
    </key> 
    <one-to-many class="com.app.objects.Question" /> 
    ... 
</set> 

Je pensais que je pouvais trouver un indice dans le fichier "reveng.xml", mais J'ai échoué.

Répondre

1

Eh bien, au lieu d'utiliser un <set> dans votre fichier hbm.xml, avez-vous essayé d'utiliser un <list>? Notez que vous aurez besoin d'une colonne d'index dans la table de collection pour utiliser <list> (puisque List est une collection ordonnée).

Essayez quelque chose comme ça:

<list name="questions" 
     inverse="true" 
     lazy="true" 
     table="questions" 
     fetch="select"> 
    <key column name="test_id" not-null="true" /> 
    <list-index column="sortOrder"/> 
    <one-to-many class="com.app.objects.Question" /> 
</list> 

Consultez la section 6.2. Collection mappings dans la documentation pour plus de détails. Portez une attention particulière à la section 6.2.3. Indexed collections.