Spring Boot 更新枚举数据类型时出现异常

new9mtju  于 2023-02-22  发布在  Spring
关注(0)|答案(1)|浏览(173)

使用以下代码,
实体:

@Column
@Enumerated(value = EnumType.STRING)
private MyStatusEnum status;
public enum MyStatusEnum {
  ENABLED,
  DISABLED
}

存储库方法:

@Transactional
@Modifying
@Query("UPDATE MyEntityClass e SET e.status = 'ENABLED'")
int setEnabledStatus();

当尝试启动应用程序时,我得到了以下异常:
... Caused by: org.hibernate.query.SemanticException: The assignment exppression type [java.lang.String] did not match the assignment path type [...MyStatusEnum] for the path [e.status] [UPDATE MyEntityClass e SET e.status = 'ENABLED']
有人遇到过同样的问题吗?我用的是Spring Boot3.0.2

uurv41yg

uurv41yg1#

您必须使用枚举值,而不是字符串:

@Transactional
@Modifying
@Query("UPDATE MyEntityClass e SET e.status = MyStatusEnum.ENABLED")
int setEnabledStatus();

因为JPA使用对象

相关问题