Open
Description
Hi, I have an issue with enums using spring-data-jdbc.
I have a Java enum type:
public enum Sentiment {
POSITIVE,
NEGATIVE,
NEUTRAL
}
And a corresponding enum type on one of my tables:
insights=> \dT+ sentiment
List of data types
Schema | Name | Internal name | Size | Elements | Owner | Access privileges | Description
--------+-----------+---------------+------+----------+-------------+-------------------+-------------
public | sentiment | sentiment | 4 | POSITIVE+| owner | |
| | | | NEGATIVE+| | |
| | | | NEUTRAL | | |
(1 row)
I have this Entity (see the Sentiment field):
@Table("responses")
public record Response(
@Id UUID id,
UUID roundId,
UUID cardTemplateId,
UUID cardId,
UUID answerOptionTemplateId,
UUID answerOptionId,
String text,
Sentiment sentiment) {}
If I call save on the repository:
responseRepository.save(new RoundResponse(Id, roundId, UUID.randomUUID(), UUID.randomUUID(), UUID.randomUUID(), UUID.randomUUID(), "text", null)); // sentiment is null
I get the error:
Caused by: org.postgresql.util.PSQLException: ERROR: column "sentiment" is of type sentiment but expression is of type character varying
I have some Converters for handling the enums but because the value is null it doesn't reach these converters. It seems to me that the spring-data-jdbc library must be at some point trying to convert the null value to a varchar? (maybe by default?)
This is not what I would expect, I would expect if the value I am inserting is null and my enum type postgres field is nullable then null should be used rather than varchar :)
Let me know if you need any more information, thank you!