Mysql 8 @enumerated (enumtype.string) java enum hibernate native Query param opply обновление от MySQL 5.7JAVA

Программисты JAVA общаются здесь
Anonymous
Mysql 8 @enumerated (enumtype.string) java enum hibernate native Query param opply обновление от MySQL 5.7

Сообщение Anonymous »

У меня есть проблема с @enumerated (enumtype.string) enum, передаваемая как парамец на собственный запрос после обновления MySQL с 5,7 до 8.0.34. < /p>
Моя упрощенная настройка: < /p>
< /p>
< /p>

Код: Выделить всё

public enum MyEnum {
A,B;
}

@Entity
@Audited
@Table(name = "my_table")
public class MyTableModel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true)
private Long id;

@Column(name = "myenum")
@NotNull
@Enumerated(EnumType.STRING)
private MyEnum myEnum;
.....
< /code>
Проблема возникает, когда я пытаюсь обновить этот перечисление, используя собственный запрос, например: < /p>
Query query = entityManager.createNativeQuery("UPDATE my_table up set  up.myenum=:myenum WHERE up.id=:id ");
query.setParameter("id", id);
query.setParameter("myenum", MyEnum.B);
query.executeUpdate();
< /code>
Я был рабочим кодом ранее в MySQL 5.7 Обновление пиора до 8.0.34 < /p>
Я протестировал выше с несколькими разнообразными версиями сгибания /пружины:
hibernate 4.2.21 и пружина 4.3.13.Caused by: java.sql.SQLException: Incorrect string value: '\xAC\xED\x00\x05~r...' for column     'myenum' at row 1
< /code>
Hibernate 5.4.3 и Spring 5.3.27.java.lang.IllegalArgumentException: No enum constant com.example.MyEnum.¬í~rFcom.example.MyEnumnxrjava.lang.EnumxptA
at java.base/java.lang.Enum.valueOf(Enum.java:240)
at org.hibernate.type.descriptor.java.EnumJavaTypeDescriptor.fromName(EnumJavaTypeDescriptor.java:84)

< /code>
Я делаю что -то не так с Enum? Я не могу обновить более старую версию Hibernate/Spring, и мне нужно найти способ ее исправить.query.setParameter("myenum", MyEnum.B.name())
I Проверьте кодирование базы данных/столбца, измените диалект на последнее доступное в данных версиях Hibernate, обновите соединитель MySQL на один из последних 8.0.15. Как указано выше, я пытался вручную изменить перечисление на простую строку с использованием name (), и это работало, как и ожидалось.>

Подробнее здесь: https://stackoverflow.com/questions/769 ... param-prob

Вернуться в «JAVA»