Spring Data Jpa 查询方法枚举转换错误

问题描述 投票:0回答:1

我正在使用 spring data jpa、hibernate 和 postgresql。我在实体字段中有枚举字段。保存操作没有错误,因为我添加了ColumnTransformer写入属性。但是,当读取操作时,它会抛出错误

错误:运算符不存在:enum_alpha = 字符变化。不 运算符匹配给定的名称和参数类型。你可能需要 添加显式类型转换。

枚举

public enum EnumAlpha {

    A("a"),
    B("b");

    public String text;

}

实体

@Entity
public class MyEntity {

    ...

    private Long someId;

    @Enumerated(EnumType.STRING)
    @ColumnTransformer(write = "?::myschema.enum_alpha")
    private EnumAlpha alpha;

    ....

}

存储库

@Repository
public interface MyEntityRepository extends JpaRepository<MyEntity, Long> {

    boolean existsBySomeIdAndAlpha(Long someId, EnumAlpha alpha);

}

postgresql 枚举类型

          CREATE TYPE enum_alpha AS ENUM (
                'A',
                'B');

我也尝试了 ColumnTransformer 读取属性,但不起作用。 我不想在存储库级别使用本机查询或查询注释。我想使用查询方法。有什么解决办法吗?谢谢

postgresql hibernate spring-data-jpa
1个回答
0
投票

将读取属性添加为 varchar 解决了我的问题。

@Enumerated(EnumType.STRING)
@ColumnTransformer(read = "alpha::varchar", write = "?::myschema.enum_alpha")
private EnumAlpha alpha;
© www.soinside.com 2019 - 2024. All rights reserved.