我正在使用 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 读取属性,但不起作用。 我不想在存储库级别使用本机查询或查询注释。我想使用查询方法。有什么解决办法吗?谢谢
将读取属性添加为 varchar 解决了我的问题。
@Enumerated(EnumType.STRING)
@ColumnTransformer(read = "alpha::varchar", write = "?::myschema.enum_alpha")
private EnumAlpha alpha;