Error Class 'XX' should have [public, protected] no-arg constructor #404
-
Buenas tardes! Tengo una consulta surgida del uso de JPA.
Por lo que averigüe este error aparece cuando la clase no tiene un constructor sin argumentos, por lo que al agregarlo de la siguiente manera: public Miembro() { } Se soluciona el error. Sin embargo, esto provocaría que haya dos constructores al mismo tiempo: El 1° un constructor sin parámetros, y el 2° un constructor con dos parámetros que se usaban para la lógica de los requerimientos anteriores (en este caso, dos parámetros). Esta encrucijada se repite para otras clases. ¿Qué me recomienda hacer? ¿Puedo dejar dos constructores, uno vacío Miembro() y otro con parámetros Miembro(parametro1, parametro2, etc)? ¿Por qué me exige tener un constructor sin parámetros? Disculpe las molestias, espero su respuesta. |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 1 reply
-
¡Buena pregunta! El motivo es que JPA instancia a los objetos persistentes usando reflection (es decir, una técnica de metaprogramación) y por tanto no sabe qué argumentos pasarle al constructor. Es por ello que necesita un constructor fácil de invocar: público y sin argumentos. |
Beta Was this translation helpful? Give feedback.
Dicho eso, sí, vas a tener que dejar ambos constructores: uno público (o mejor, protected, para minimizar la probabilidad de errores y documentar mejor tu intención) y otro, con los parámetros que ya tenés.