No puedo atribuirme el mérito de esta respuesta, ya que ya la resolvió, pero le explicaré por qué funciona.
PostgreSQL proporciona la respuesta cuando dice
El código Java está creando un valor literal de cadena que representa el tipo de género de enumeración Java.
La conversión de un literal a un tipo de género de PostgreSQL se realiza agregando un sufijo de conversión al valor ::gender
.
Así que la entrada válida sería
'F'::gender
o
'M'::gender
Esto funciona porque todos los tipos de PostgreSQL tienen un método de entrada que toma una representación de texto y la convierte a la forma interna.