Pregunta

Tengo una clase de resumen que contiene una lista de cualidades. Una calidad contiene un nombre de cadena y el valor int. Estos datos se almacenan en una estructura db sin normalizar, sólo una mesa, por tanto Resumen y calidad.

Mesa de Calidad:

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

Para cada nombre y valor de calidad pares, un nuevo objeto de Calidad debe estar insertada en la clase de resumen.

Cómo asignar este en hibernación (Hibernate mapeo XML)?

¿Fue útil?

Solución

No está claro cómo los objetos Quality deben ser "insertados" en la clase titular Summary pero creo que un tipo de usuario personalizado (ya sea o.h.u.UserType o o.h.u.UserCollectionType ) es el camino a seguir aquí.

Consulte la sección 5.2.3. tipos de valores personalizada en la documentación para más detalles (no hay mucho que decir acerca de la asignación, sólo tiene que especificar su tipo de usuario personalizada como type en el mapeo).

Otros consejos

I logró solucionarlo con una aplicación CompositeUserType personalizado. El archivo de correlación se ve de la siguiente manera:

<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>

El returnedClass en el CompositeUserType es List.class, el método nullSafeSet obtiene la colección como argumento de valor. Es sólo una cuestión de conseguir los valores de la lista y asignarlos a los parámetros de la declaración preparada. (Y relleno con un valor nulo si los valores que faltan en la lista de las cualidades).

El método nullSafeGet es easyer. Me acabo de crear un nuevo ArrayList en que los nuevos objetos de calidad se insertan con los valores del conjunto de resultados.

Me puede añadir un ejemplo completo si está interesado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top