如何修复枚举的休眠"findBy"输入?



我有一个像这样的实体

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)。
另一方面,如果我直接传递enum,它会尝试查找PK(UUID) = enum的行,而不是在另一列(fieldName varchar)上搜索。

public class SomeClass {
@Column(nullable = false)
@Enumerated(EnumType.STRING)
private SomeEnum fieldName;

}

公共接口someeclassrepository扩展了AnotherRepository<someeclass,>{

Optional<SomeClass> findByFieldName(SomeEnum param);

}

请试试这个。这应该可以工作

最新更新