【问题标题】:How to fix typing in hibernate "findBy" for enums?如何修复枚举的休眠“findBy”输入?
【发布时间】:2021-08-28 05:00:14
【问题描述】:

我有这样的实体

public class SomeClass {

    @NonNull
    @NotNull
    @Column(nullable = false)
    @Convert(converter = SomeEnumConverter.class)
    private SomeEnum fieldName;
}

我希望能够在 DB 中找到枚举名称与我传递的字符串/枚举匹配的行。该表只有 2 列。 UUID 是 PK,fieldName 是 varchar。我尝试了以下存储库方法。

public interface SomeClassRepository extends AnotherRepository<SomeClass, UUID> {

    Optional<SomeClass> findByFieldName(SomeEnum param);

}
public interface SomeClassRepository extends AnotherRepository<SomeClass, UUID> {

    Optional<SomeClass> findByFieldName(String param);

}

我的问题是,如果我尝试通过传递字符串(第二种情况)来查找,它会抱怨我传递的值不是预期的类型(SomeEnum)。
另一方面,如果我直接传递枚举,它会尝试查找我传递的具有 PK(UUID) = enum 的行,而不是在另一列(fieldName varchar)上搜索。我该如何克服这个问题?

【问题讨论】:

    标签: spring-boot hibernate enums


    【解决方案1】:
    public class SomeClass {
    
    @Column(nullable = false)
    @Enumerated(EnumType.STRING)
    private SomeEnum fieldName;
    

    }

    公共接口 SomeClassRepository 扩展了 AnotherRepository {

    Optional<SomeClass> findByFieldName(SomeEnum param);
    

    }

    请试试这个。这应该工作

    【讨论】:

      猜你喜欢
      • 2010-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-16
      • 2012-01-17
      • 1970-01-01
      • 2011-10-01
      相关资源
      最近更新 更多