【问题标题】:Spring boot 3 org.hibernate.query.SemanticException when updating an enum data typeSpring boot 3 org.hibernate.query.SemanticException 更新枚举数据类型时
【发布时间】:2023-02-19 20:08:22
【问题描述】:

使用以下代码,

实体:

@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 boot 3.0.2

【问题讨论】:

    标签: spring-boot enums spring-data-jpa


    【解决方案1】:

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

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

    因为 JPA 使用对象

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-15
      • 2021-03-05
      • 1970-01-01
      • 2012-01-16
      • 1970-01-01
      • 2019-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多