hypersistence-utils icon indicating copy to clipboard operation
hypersistence-utils copied to clipboard

ListArrayType and Enums columnDefinition to text[]

Open ProIcons opened this issue 3 years ago • 3 comments

When i declare the following type:

@TypeDef(
        name = "viewing_types",
        typeClass = ListArrayType.class,
        parameters = {@Parameter(name = ListArrayType.SQL_ARRAY_TYPE, value = "text")}
    )

and use it like this

@Type(type = "viewing_types")
@Column(name = VIEWING_TYPES, columnDefinition = "text[]")
@Enumerated(EnumType.STRING)
private List<ViewingType> viewingTypes;

it seems that it is completely ignoring the @Enumerated and instead it creates an array of the toString() values of the enums, instead of the name() values or ordinal() for enum types EnumType.String and EnumType.Ordinal accordingly

Even if it had as the intended behavior to be always @Enumerated(EnumType.String) It is inconsistent since by default on simple fields annotated with @Enumerated(EnumType.STRING) hibernate is using the name() method of the enum to persist the values on the database instead of the toString().

While this works on persisting the object to the database (even though it is using the toString() value), on fetching it will fail with an IllegalArgumentException which is been thrown from the Enum.valueOf() ​on https://github.com/vladmihalcea/hibernate-types/blob/d7cc02d550f6d84df4f50a79ced1b71e6ee2a2d8/hibernate-types-52/src/main/java/com/vladmihalcea/hibernate/type/array/internal/ArrayUtil.java#L191

since toString() might be overridden and not match name() any more.

ProIcons avatar Nov 09 '21 09:11 ProIcons

This feature was never implemented, but you can implement it if you need it.

vladmihalcea avatar Nov 09 '21 09:11 vladmihalcea

Since there are handlings for Enum Values, how is it exactly not implemented? I'm not sure i follow.

ProIcons avatar Nov 09 '21 10:11 ProIcons

Check out the source code and you'll see what is implemented at the moment and why it's not working for you.

vladmihalcea avatar Nov 09 '21 11:11 vladmihalcea