Domanda

Ho una classe riepilogo che contiene un elenco di Qualità. Una qualità contiene un nome di stringa e un valore int. Questi dati vengono memorizzati in una struttura db denormalizzato, solo un tavolo, sia per la Sintesi e qualità.

Tavolo di qualità:

id, somefileds, qualityname1, qualityvalue1, qualityname2, qualityvalue2, qualityname3, qualityvalue3

Per ogni nome e valore di qualità coppie, un nuovo oggetto di qualità deve essere inserito nella classe di riepilogo.

Come mappare questo in ibernazione (xml hibernate mappatura)?

È stato utile?

Soluzione

Non è chiaro come gli oggetti Quality devono essere "inseriti" nella classe titolare Summary ma penso che un tipo di utente personalizzato (sia o.h.u.UserType o o.h.u.UserCollectionType ) è il modo di andare qui.

Fare riferimento alla sezione 5.2.3. tipi di valore personalizzato nella documentazione per maggiori dettagli (non c'è molto da dire sulla mappatura, è sufficiente specificare il tipo di utente personalizzato come type nel mapping).

Altri suggerimenti

Sono riuscito a risolvere il problema con un'implementazione CompositeUserType personalizzato. L'aspetto file di mapping nel seguente modo:

<property name="qualities" type="com.foo.bar.QualityCompositeUserType">
        <column name="linkName1" />
        <column name="linkQuality1" />
        <column name="linkName2" />
        <column name="linkQuality2" />
        <column name="linkName3" />
        <column name="linkQuality3" />
</property>

Il returnedClass nel CompositeUserType è List.class, il metodo nullSafeSet ottiene la collezione come argomento value. E 'solo una questione di ottenere i valori dalla lista e assegnarli ai parametri nella dichiarazione preparata. (E riempire con valori null se mancano nella lista di Qualità).

Il metodo nullSafeGet è easyer. Mi basta creare un nuovo ArrayList in cui i nuovi oggetti di qualità vengono inseriti con i valori del gruppo di risultati.

posso aggiungere un esempio completo se interessati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top