viernes, 6 de junio de 2014

[Hibernate] MappingException: property mapping has wrong number of columns

Ésta es una entrada rápida para evitar perder dos días de trabajo como me ha ocurrido. Sé que hacía mucho que no escribía, pero esta nota debe ser recordada, ya que lo que no se apunta, se olvida.

En un proyecto que hace uso de Hibernate para persistir datos en una base de datos PostgreSQL desde clases Java, estaba obteniendo la excepción "MappingException: property mapping has wrong number of columns" a la hora de crear los bean de los objetos mapeados.

Buscando en internet, aparecen decenas de entradas en blogs y foros diciendo que ese error aparece en casos en los que el mapeo es erróneo, y bien en la clase que se muestra en la excepción se han declarado atributos del tipo java.lang.Object o bien están definidos en el XML del mapeo como Object (ambas cosas no son soportadas por Hibernate, por lo visto).

Al estar haciendo el mapeo a través de anotaciones, la segunda opción estaba descartada y, tras revisar numerosas veces la clase en cuestión, la primera no tenía sentido...

Lo que no vi mencionar en ningún sitio es que debía poner estas anotaciones en la declaración de los atributos y no en el método getter, que normalmente es como lo había hecho. No sé si se trata de algo puntual debido a la configuración de mi proyecto o no, pero la cuestión es que se solucionó al cambiar esto:

        private String mmpIdParametro;

@Id
@Column(name = "COLUMNA", unique = true, nullable = false, length = 64)
public String getColumna() {
return this.mmpIdParametro;
}

Por esto:

        @Id
@Column(name = "COLUMNA", unique = true, nullable = false, length = 64)
        private String mmpIdParametro;

public String getColumna() {
return this.mmpIdParametro;
}

No sé si esto servirá a alguien más, pero si le puedo ahorrar a tan solo una persona el trago de perder 2 días de trabajo por semejante chorrada, me doy por satisfecho.

No hay comentarios:

Publicar un comentario