MongoDB warning: raw types found raw type: Field
En el desarrolo que estoy haciendo aplicando MongoDB en un servidor tomcat y Java 1.8 , estoy empleando Aggregates, ya que me permite una manejo flexible de manipulacion de la informaccion, indexar por diferentes campos, consultas un poco complejas y por supuesto el nunca bien podenrado $lookup (aggregation), para modelar las conultas de forma similar a un Join de las bases de datos SQL.
Como caracteistica relevante de mis desarrollos suelo emplear, addFields(new Field("document", "$$ROOT")) ; y agregar los campos que me permitan ajustar mis consultas de una forma mas precisa , por decir algo por la logitud de la variable, o mezclas de campos.
Algo como esto por ejemplo:
addFields(new Field("campodLen",
new Document("$strLenCP" , "$campoId"))
)
Que agrega el campo : campoIdLen que contiene la longitud del contenido en la variable campoId.
La mecanica es sencilla , pero la dificultar que se me estaba presentando es que al momento de compilacion se me presentaban error del tipo:
-------------------------------------------------------------------------------------------------------------
ActasDAO.java:190: warning: [rawtypes] found raw type: Field
myAddFieldsF = addFields(new Field("document", "$$ROOT")) ;
^
missing type arguments for generic class Field<TExpression>
where TExpression is a type-variable:
TExpression extends Object declared in class Field
ActasDAO.java:190: warning: [unchecked] unchecked call to Field(String,TExpression) as a member of the raw type Field
myAddFieldsF = addFields(new Field("document", "$$ROOT")) ;
^
where TExpression is a type-variable:
TExpression extends Object declared in class Field
---------------------------------------------------------------------------------------------------------------
Que aunque no afectan para nada el normal desempeño de la aplicacion
si genera mucho codigo de Warning que dificultan la depuracion de cualquier
error, porque en mi caso por ejemplo estos warning son cientos, asi las cosas
me toca encontrar una solucion que resolviera esto, desde luego el primer intento fue el uso de anotaciones de la forma
Sin embargo no me funciono, aunque siempre se desaconseja el uso de tipos crudos (raw types) en la aplicacion por cuestiones de seguridad, en mi caso encontre que esta definicion en realidad no comprometia para nada mi desarrollo
La solucion fue simple es definir el raw tipe en la instruccion donde aparece el Field, en este caso use dos formas dferentes dependiendo del uso asi:
1. addFields(new Field<String>("document", "$$ROOT") porque los argumentos son de tipo cadena
2. addFields(new Field<Bson>("campodLen",
new Document("$strLenCP" , "$campoId"))
)
Porque los argumentos sond de tipo Bson.
Comentarios
Publicar un comentario