Моя упрощенная настройка: < /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())
Подробнее здесь: https://stackoverflow.com/questions/769 ... param-prob