postgresql - R2DBC spring postgres枚举映射
问题描述
我是 spring r2dbc 的新手。以前我有用户休眠。在休眠中,当您需要将 postgresql 枚举映射到 java 枚举时,您只需添加com.vladmihalcea:hibernate-types-52
和使用@Enumerated
(如下所示)。与R2DBC 和枚举(PostgreSQL)相关的SO 问题我必须为每个枚举创建编解码器。是否有可能通过某种标签或其他通用解决方案来实现这一目标,而不仅仅是创建多个编解码器。
CREATE TYPE user_type_enum AS ENUM ('ADMIN', 'USER');
public class PostgreSQLEnumType extends org.hibernate.type.EnumType {
public void nullSafeSet(PreparedStatement st, Object value,
int index, SharedSessionContractImplementor session)
throws HibernateException, SQLException {
st.setObject(
index,
value != null ? ((Enum) value).name() : null,
Types.OTHER
);
}
}
public enum UserTypeEnum {
ADMIN,
USER
}
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import org.springframework.data.annotation.Id
import org.springframework.data.relational.core.mapping.Table;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
@Table;
@TypeDef(
name = "pgsql_enum",
typeClass = PostgreSQLEnumType.class
)
public class User {
@Id
private Long id;
private String usename;
@Enumerated(EnumType.STRING)
@Type(type = "pgsql_enum")
private UserEnumType userType;
// Getters and setters provided
}
解决方案
推荐阅读
- python - 如何在循环中链接堆栈
- firebase - 如何从 URL 中隐藏 Google Storage 存储桶路径和图像名称
- python-3.x - pgdb 导入错误(_pd.pyd 文件未创建)
- azure-data-factory - 如何在 Azure 数据工厂 V2 中进行异常处理
- php - 更改功能,在茁壮成长可视化编辑器的插件类中找到
- ubuntu - 为什么ubuntu在运行lex程序时显示错误
- batch-file - 如何让程序正确运行
- javascript - 单击按钮并播放视频时如何设置 if else 语句
- c# - 如何在 .Net Core 中创建文件并在此文件中插入字节?
- build - 通过构建脚本或构建工具压缩构建结果的最佳实践是什么?